用Mathematica怎么求伴随矩阵

2025-02-26 20:35:17
推荐回答(1个)
回答1:

  

  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]]