在Maxima中处理4块定向矩阵乘积和反演

时间:2012-07-20 05:30:52

标签: matrix symbolic-math maxima

我担心找到符号解决方案并扩展到矩阵产品和反转。实际上,这是我想自己定义的东西。我会解释自己。

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

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

如何在Maxima中实现这一目标?

三江源

1 个答案:

答案 0 :(得分: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]”这样的表达式(右上角)等等。