Maple 中的矩阵乘法

问题描述 投票:0回答:1

我在 Maple 中定义了我的矩阵

M
,如下所示:

M := Matrix(2, 2, [[-a, a], [b, -b]]);

然后我想用

M^k
导出
M
。我应该得到的答案是 M^k = M*[-(a+b)]^{k-1}。当我输入命令时:

M^k;

我得到以下不需要的输出

Matrix(2, 2, [[-a, a], [b, -b]])^k

如何解决我的问题?来自我的枫树的图片显示了我所尝试过的。

maple
1个回答
1
投票

这是获得这样结果的一种方法:

M := Matrix(2, 2, [[-a, a], [b, -b]]):

simplify(LinearAlgebra:-MatrixPower(M,k));

      [           (k - 1)            (k - 1) ]
      [-a (-b - a)         a (-b - a)        ]
      [                                      ]
      [          (k - 1)              (k - 1)]
      [b (-b - a)          -b (-b - a)       ]

您可以轻松证明这等于

M*(-b-a)^(k-1)

[编辑] 我认为这可能是一个课程作业问题,因此您可能对更逐步的方法感兴趣,而不仅仅是

MatrixPower
命令提供的结果。

让我们对角化矩阵

M
,同时检查结果。

restart;
with(LinearAlgebra):

M := Matrix([[-a, a], [b, -b]]);

               [-a  a ]
          M := [      ]
               [b   -b]

(evals,P) := Eigenvectors(M);

                          [  a   ]
                [-b - a]  [- -  1]
    evals, P := [      ], [  b   ]
                [  0   ]  [      ]
                          [ 1   1]

Diag := DiagonalMatrix(evals);

                [-b - a  0]
        Diag := [         ]
                [  0     0]

检查

P.Diag.P^(-1)
是否等于
M

simplify( P . Diag . P^(-1) - M );

             [0  0]
             [    ]
             [0  0]

事实证明,在这里使用

Adjoint(P)/Determinant(P)
比使用
P^(-1)
稍微容易一些。但首先我们会检查它们是否等效,这对您来说可能是新的。

Adjoint(P);

          [1   -1 ]
          [       ]
          [      a]
          [-1  - -]
          [      b]

detP := Determinant(P);

                 b + a
       detP := - -----
                   b  

simplify( Adjoint(P)/detP - P^(-1) );

             [0  0]
             [    ]
             [0  0]

我们也可以使用

denom(detP)/numer(detP)
代替
1/detP

我们想要

M^k
。但这是一样的,

( P . Diag . P^(-1) )^k

现在,“大想法:。如果将

P.Diag.P^(-1)
乘以自身
k
次,那么您会在该项的乘积中得到
P^(-1).P
的各种实例。但是
P^(-1).P
只会产生单位矩阵。所以
(P.Diag.P^(-1))^k 
将望远镜向下至,

P . Diag^k . P^(-1)

这里

Diag^k
是,

Diag^~k;

     [        k   ]
     [(-b - a)   0]
     [            ]
     [    0      0]

相同
Matrix([[1,0],[0,0]])*(-b-a)^k;

      [        k   ]
      [(-b - a)   0]
      [            ]
      [    0      0]

所以

M^k

相同
P . Matrix([[1,0],[0,0]])*(-b-a)^k . Adjoint(P)
  * denom(detP)/numer(detP);

   [            k             k ]
   [  a (-b - a)    a (-b - a)  ]
   [- -----------   ----------- ]
   [    -b - a        -b - a    ]
   [                            ]
   [           k               k]
   [ b (-b - a)      b (-b - a) ]
   [ -----------   - -----------]
   [   -b - a          -b - a   ]

您可以检查是否简化为之前的

MatrixPower
结果。

我们还可以重新排列最后一个产品中的术语,

P . Matrix([[1,0],[0,0]]) . Adjoint(P) * denom(detP)
  * ((-b-a)^k) / numer(detP);

最后一个产品可以分为两个术语

“第一项”原来很简单

M
,

P . Matrix([[1,0],[0,0]]) . Adjoint(P)
  * denom(detP);

         [-a  a ]
         [      ]
         [b   -b]

“第二项”是,

simplify( ((-b-a)^k) / numer(detP) );

              (k - 1)
      (-b - a)       

所以

M^k
与第一项乘以第二项相同,即。
M * (-b-a)^(k-1)

© www.soinside.com 2019 - 2024. All rights reserved.