正如其他人所說,這個系統是不確定的(不是如丹尼斯說的那樣)。既然你有一些後續問題,讓我進一步深入。
A中有一行,基本上有一個方程,有7個未知數。您基本上可以將這些未知數中的任何6個設置爲零,然後解決第七個。這是反斜槓所做的。它將選擇未知數,使得結果具有來自任何噪聲的最小貢獻,因此這裏是A矩陣中具有最大絕對係數的未知。這就是爲什麼第五個未知數在結果中不爲零的原因。
事實上,解決方案將生活在一個6維集。我們可以自由地添加從A的空行空間向量的任何線性組合向該解決方案,並獲得另一個基於線性系統的同等(數學)有效的解決方案。
A = [0.1195952380, 0.2552619050, 0.3235000000,...
0.1289285710, 0.6675476190, -0.0770000000,...
0.1973809520];
null(A)
ans =
-0.3070 -0.3891 -0.1551 -0.8029 0.0926 -0.2374
0.9176 -0.1044 -0.0416 -0.2155 0.0249 -0.0637
-0.1044 0.8676 -0.0528 -0.2731 0.0315 -0.0808
-0.0416 -0.0528 0.9790 -0.1089 0.0126 -0.0322
-0.2155 -0.2731 -0.1089 0.4364 0.0650 -0.1666
0.0249 0.0315 0.0126 0.0650 0.9925 0.0192
-0.0637 -0.0808 -0.0322 -0.1666 0.0192 0.9507
null(A)的列是這些空子空間的基向量。事實證明,有時反斜槓解決方案並不是首選,因爲它有點任意選擇元素設置爲零。不同的解決方案是使用pinv(A)* b0。
pinv(A)
ans =
0.1730
0.3693
0.4680
0.1865
0.9657
-0.1114
0.2855
pinv(A)*b0
ans =
0.2985
0.6370
0.8073
0.3217
1.6659
-0.1922
0.4926
PINV(A)是A的摩爾-Penrose僞逆它使用奇異值分解以產生結果,所以這將是比一般反斜槓慢,但是這裏的差異將是微不足道的。有時令人感興趣的pinv解決方案的特點是它具有所有可能的解決方案中最小的規範。
b0 = 1.7250238100;
norm(A\b0)
ans =
2.5841
norm(pinv(A)*b0)
ans =
2.0748
一種解決方案比另一種更好嗎?不是真的。有時我們關心差異,你可能會考慮選擇其中的一個。但是如果你只有一個等式,那麼你必須接受任何可能的解決方案都可能與其他解決方案一樣好。
當然有不良的解決方案,我們可能會選擇。例如,這下一個解決方案是在理論上,一個同樣有效的選擇,如果一個愚蠢的一個:
x2 = x1 + null(A)*10*randn(6,1)
x2 =
-4.09413481014061
13.5483342562954
13.4850200598594
6.44121071558247
-13.4923071847226
7.3358845464619
15.883243834012
我選擇在A的零空間向量它看起來的隨機線性組合加上喜歡給相同的解決方案A * x2。
A*x2
ans =
1.72502381
但是,當我們減去關閉B0,我們看到,在X2較大的係數是一個問題。這些係數在那些最不重要的位上放大了噪聲,產生了一個微妙的解。
A*x2 - b0
ans =
6.66133814775094e-16
將其與其他解決方案的殘差相比較,我們發現它可能更糟糕。
A*x0 - b0
ans =
0
A*x1 - b0
ans =
2.22044604925031e-16
當然,由於每股收益
eps
ans =
2.22044604925031e-16
這是關於我們對這個問題的希望的限制。
當然,當你有更多的方程比未知數(這裏比A中的列更多的行)AND A是滿秩的,那麼這兩個解決方案應該與數字垃圾內的相同。這是您已閱讀的內容,但僅適用於過度確定的問題。你的問題不是過度確定的,但是沒有確定。
我想你在做什麼與A \ b0是A * pinv(b0) – 2013-03-14 10:48:51
也許你可以顯示你正在談論哪些文件? – 2013-03-14 10:49:26
@AnderBiguri這不會給零作爲輸出,因爲'pinv(b0)'只是一個正標量。 – 2013-03-14 10:51:47