這個問題是相當古老的,但我會回答它,因爲它幾乎出現在谷歌搜索的頂部。
我將用我的例子來說明魔術(N)函數,它返回一個N乘N的魔方。
我將創建一個3x3的幻方M3,採取僞逆PI_M3和繁殖他們:
prompt_$ M3 = magic(3) , PI_M3 = pinv(M3) , M3 * PI_M3
M3 =
8 1 6
3 5 7
4 9 2
PI_M3 =
0.147222 -0.144444 0.063889
-0.061111 0.022222 0.105556
-0.019444 0.188889 -0.102778
ans =
1.0000e+00 -1.2212e-14 6.3283e-15
5.5511e-17 1.0000e+00 -2.2204e-16
-5.9952e-15 1.2268e-14 1.0000e+00
正如你所看到的答案是單位矩陣除了一些舍入誤差。 我會重複操作與一個4x4的幻方:
prompt_$ M4 = magic(4) , PI_M4 = pinv(M4) , M4 * PI_M4
M4 =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
PI_M4 =
0.1011029 -0.0738971 -0.0613971 0.0636029
-0.0363971 0.0386029 0.0261029 0.0011029
0.0136029 -0.0113971 -0.0238971 0.0511029
-0.0488971 0.0761029 0.0886029 -0.0863971
ans =
0.950000 -0.150000 0.150000 0.050000
-0.150000 0.550000 0.450000 0.150000
0.150000 0.450000 0.550000 -0.150000
0.050000 0.150000 -0.150000 0.950000
結果不是單位矩陣,這意味着4x4的幻方不具有逆。 我可以嘗試的摩爾 - 彭羅斯僞逆的規則之一驗證這一點:
prompt_$ M4 * PI_M4 * M4
ans =
16.00000 2.00000 3.00000 13.00000
5.00000 11.00000 10.00000 8.00000
9.00000 7.00000 6.00000 12.00000
4.00000 14.00000 15.00000 1.00000
規則A * B * A = A是滿意的。這表明pinv在可用時返回逆矩陣,在逆不可用時返回僞逆。這就是爲什麼在某些情況下,你會得到一個小小的差異,只是一些舍入誤差,而在其他情況下,你會得到更大的差異。 要顯示它,我會得到兩個魔法象限的逆和僞逆減去他們:爲什麼是Matlab的INV緩慢和不準確的]
prompt_$ I_M3 = inv(M3) , I_M4 = inv(M4) , DIFF_M3 = PI_M3 - I_M3, DIFF_M4 = PI_M4 - I_M4
I_M3 =
0.147222 -0.144444 0.063889
-0.061111 0.022222 0.105556
-0.019444 0.188889 -0.102778
warning: inverse: matrix singular to machine precision, rcond = 1.30614e-17
I_M4 =
9.3825e+13 2.8147e+14 -2.8147e+14 -9.3825e+13
2.8147e+14 8.4442e+14 -8.4442e+14 -2.8147e+14
-2.8147e+14 -8.4442e+14 8.4442e+14 2.8147e+14
-9.3825e+13 -2.8147e+14 2.8147e+14 9.3825e+13
DIFF_M3 =
4.7184e-16 -1.0270e-15 5.5511e-16
-9.9226e-16 2.0470e-15 -1.0825e-15
5.2042e-16 -1.0270e-15 4.9960e-16
DIFF_M4 =
-9.3825e+13 -2.8147e+14 2.8147e+14 9.3825e+13
-2.8147e+14 -8.4442e+14 8.4442e+14 2.8147e+14
2.8147e+14 8.4442e+14 -8.4442e+14 -2.8147e+14
9.3825e+13 2.8147e+14 -2.8147e+14 -9.3825e+13
的可能重複(HTTP://計算器。 com/questions/1419580/why-is-matlabs-inv-slow-and-accurate) – Shai
@Shai,我相信OP可能從閱讀你鏈接到的問題的答案中受益(至少如果OP使用'inv'解決'x = A^-1 * b'),但IMO不是重複的。 –