1

我关心的是寻找符号解和矩阵乘积和求逆的扩展。实际上,这是我想自己定义的东西。我会自己解释。

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

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

如何在千里马中实现这一点?

谢谢

4

1 回答 1

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]”(右上角)等表达式来获取块。

于 2012-08-22T08:35:32.477 回答