用Mathematica怎么求伴随矩阵
Minors函数确实提供了计算子矩阵的方法,不过有个问题就是,位置并不是一一对应的,所以需要做两个方面的调整,一是符号问题,计算的时候并没有加入符号,即\
(-1)^i + j 是没有相乘的。二是位置的对应问题,伴随矩阵要求行对应列,而不是行对应行,列对应列。所以,可以编写一个模块函数:
AdjointMatrix[M_] := Module[{Ma, B, n, i, j}, Ma = Minors[M];
B = Ma;
n = Dimensions[M][[1]];
For[i = 1, i <= n, i++,
For[j = 1, j <= n, j++,
B[[i, j]] =
Ma[[n + 1 - i,
n + 1 - j]]*(-1)^(i + j);];(*inner for*)];(*outer for*)
Transpose[B]];(*module*)
下面是测试例子,一个奇异矩阵A,一个非奇异矩阵B:
A = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
MatrixForm[A]
AA = AdjointMatrix[A];
MatrixForm[AA]
MatrixForm[A.AA]
B = {{1, 2, 3, 0, 1}, {2, 1, -2, 3, 1}, {5, 4, 3, 1, 3}, {0, 0, 1, 0,
2}, {1, 5, -1, 2, 1}};
MatrixForm[B]
BB = AdjointMatrix[B];
MatrixForm[BB]
MatrixForm[B.BB]
MatrixForm[Inverse[B]*Det[B]]