我的代码中发生了什么?我不明白为什么当a ^ -1 * b ^ -1 =(a * b)^-1时为什么会得到2种不同的矩阵,但我尝试用另一种语言编写,但是我却不断得到同样的不等式。

输入:

A = [3 5 2; 2 1 -1; 1 2 2];
B = [6 -2 4; 6 4 -12; 12 2 8];

inverseA = A^(-1);
inverseB = B^(-1);

inverseMult = inverseA * inverseB;
inverseMatMult = (A*B)^(-1);

equalityCheck = inverseMult == inverseMatMult;

disp(inverseMult)
disp(inverseMatMult)
disp(equalityCheck)


输出:

   -0.4038   -0.0863    0.1974
    0.3224    0.0923   -0.1478
   -0.1518   -0.0804    0.0804

   -0.0317    0.0615    0.0694
    0.1190   -0.2619   -0.1667
   -0.0357   -0.0089    0.0625

    0     0     0
    0     0     0
    0     0     0

最佳答案

您假设身份不正确-应该是:

(A*B)^-1 = B^-1 * A^-1


(请参阅有用的可逆矩阵身份列表here。)

因此,如果您更改此行:

inverseMatMult = (A*B)^(-1);


至:

inverseMatMult = (B*A)^(-1);


那么您应该得到预期的结果。 (请注意,由于舍入错误,相等性检查可能仍然会失败,但是您应该看到两个结果矩阵与合理数量的有效数字相同。)

10-04 11:56