我的代码中发生了什么?我不明白为什么当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);
那么您应该得到预期的结果。 (请注意,由于舍入错误,相等性检查可能仍然会失败,但是您应该看到两个结果矩阵与合理数量的有效数字相同。)