我在 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
如何解决我的问题?来自我的枫树的图片显示了我所尝试过的。
这是获得这样结果的一种方法:
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)
。