我担心找到符号解决方案并扩展到矩阵产品和反转。实际上,这是我想自己定义的东西。我会解释自己。
我想创建一个“数学”对象,我称之为B4MAT
,它代表一个方形矩阵,其元素是4个方形半大小的矩阵。所以我想在两个B4MAT
之间定义产品,让我回到另一个B4MAT
,其组件是通过应用产品规则计算的,但是在矩阵之间,而不是标量。
此外,这是非常重要的一点,请考虑矩阵的Blockwise Inversion。我想定义一个B4MAT
的反转作为一个操作,返回另一个B4MAT
,其元素是使用链接中的块状反演算法计算的。
如何在Maxima中实现这一目标?
三江源
答案 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]”这样的表达式(右上角)等等。