Maxima中是否有matrix_element_inv?

时间:2017-05-18 07:54:18

标签: maxima

在千里马,我们有matrix_element_addmatrix_element_multmatrix_element_transpose

是否有matrix_element_inv,如果没有,我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果要反转矩阵,首先要记住并非所有矩阵都可以反转,所以首先要确保矩阵可以反转。

对于使用矩阵的最大值,乘法运算符是。

所以用A。 A = A ^ 2

如果我们想得到这个值是A ^^ 2

通常,运算符应用于矩阵的每个元素,因此如果要反转所有元素:

(%i1) A: matrix ([17, 3], [-8, 11]);

                                  [ 17   3  ]
(%o1)                             [         ]
                                  [ - 8  11 ]



(%i9) A^-1;
                                  [ 1    1  ]
                                  [ --   -  ]
                                  [ 17   3  ]
(%o9)                             [         ]
                                  [   1  1  ]
                                  [ - -  -- ]
                                  [   8  11 ]

然后得到矩阵的逆矩阵:

(%i2) B: A^^-1;

                                [ 11      3  ]
                                [ ---  - --- ]
                                [ 211    211 ]
(%o2)                           [            ]
                                [  8    17   ]
                                [ ---   ---  ]
                                [ 211   211  ]

(%i4) B.A;

                                   [ 1  0 ]
(%o4)                              [      ]
                                   [ 0  1 ]

(%i5) A.B;

                                   [ 1  0 ]
(%o5)                              [      ]
                                   [ 0  1 ]

确保你的矩阵是可逆的:

(%i6)  Bad: matrix ([2, 3], [4, 6]);

                                   [ 2  3 ]
(%o6)                              [      ]
                                   [ 4  6 ]
(%i7) Bad^^-1;

expt: undefined: 0 to a negative exponent.
 -- an error. To debug this try: debugmode(true);

(%i8) newdet(Bad);

(%o8)/R/                               0

现在你应该仔细阅读这一节: http://maxima.sourceforge.net/docs/manual/maxima_23.html

特别是在讲述

matrix_element_add 

所以真的只有这个操作者所以不存在matrix_element_inv

所以你可以使用lambda函数编写自己的函数,例如获取所有倒置元素的转置:

(%i10) matrix_element_transpose: lambda ([x], x^-1)$

(%i11) transpose(A);
                                  [ 1     1 ]
                                  [ --  - - ]
                                  [ 17    8 ]
(%o11)                            [         ]
                                  [ 1   1   ]
                                  [ -   --  ]
                                  [ 3   11  ]

希望这会有所帮助