2012-07-20 87 views
1

我很关心寻找符号解决方案并扩展到矩阵乘积和反演。其实,这是我想自己定义的。我会解释我自己。处理4块定向矩阵乘积和Maxima中的反演

我想创建一个“数学”对象,我将其称为B4MAT,它表示一个矩形矩阵,其元素是4个正方形的半角矩阵。所以我想定义两个B4MAT之间的产品,让我回到另一个B4MAT,其组件是通过应用产品规则来计算的,但在矩阵之间,而不是标量。

此外,这是一个非常重要的观点,考虑一个矩阵的Blockwise Inversion。我想定义B4MAT的反转作为返回另一个B4MAT的操作,其元素是使用链接中的逐段反演算法计算的。

如何在千里马实现这一目标?

三江源

+0

也许张量可以使用? – soegaard 2012-07-27 10:33:11

回答

0

对于你的问题的前半部分,你只需要改变matrix_element_mult到非交换乘法,然后用一个矩阵,其元素是你想要的块。例如:

Maxima branch_5_27_base_248_ge261c5e http://maxima.sourceforge.net 
using Lisp SBCL 1.0.57.0.debian 
Distributed under the GNU Public License. See the file COPYING. 
Dedicated to the memory of William Schelter. 
The function bug_report() provides bug reporting information. 
(%i1) A: matrix([1,2],[3,4])$ B: matrix([2,1],[3,4])$ 

(%i3) matrix([A,B], [B,A]); 
*** output flushed *** 
(%i4) C: matrix([A,B], [B,A]); 
          [ [ 1 2 ] [ 2 1 ] ] 
          [ [  ] [  ] ] 
          [ [ 3 4 ] [ 3 4 ] ] 
(%o4)      [     ] 
          [ [ 2 1 ] [ 1 2 ] ] 
          [ [  ] [  ] ] 
          [ [ 3 4 ] [ 3 4 ] ] 
(%i5) C . C; 
          [ [ 5 5 ] [ 4 4 ] ] 
          [ [  ] [  ] ] 
          [ [ 18 32 ] [ 18 32 ] ] 
(%o5)      [      ] 
          [ [ 4 4 ] [ 5 5 ] ] 
          [ [  ] [  ] ] 
          [ [ 18 32 ] [ 18 32 ] ] 
(%i6) matrix_element_mult: "."; 
(%o6)         . 
(%i7) C . C; 
          [ [ 14 16 ] [ 13 17 ] ] 
          [ [  ] [  ] ] 
          [ [ 33 41 ] [ 33 41 ] ] 
(%o7)      [      ] 
          [ [ 13 17 ] [ 14 16 ] ] 
          [ [  ] [  ] ] 
          [ [ 33 41 ] [ 33 41 ] ] 

我认为你必须虽然编写了自己的反演公式(不要忘了,你可以在块获得包含“C [1] [2]”(用于右上方表达式角落)等