2013-03-14 29 views
2

在MATLAB中我們輸入反斜線運營商爲載體

A = [0.1195952380, 0.2552619050, 0.3235000000,... 
    0.1289285710, 0.6675476190, -0.0770000000,... 
    0.1973809520]; 

and 

b0 = 1.7250238100; 

如果我用反斜槓運算符,A \ b0,結果是

[0   0   0   0 2.5841   0   0] 

,如果我用

pinv(A)*b0 

我們得到的答案爲:

0.2985 0.6370 0.8073 0.3217 1.6659 -0.1922 0.4926 

但是很多談論反斜槓操作符的文檔都說這兩個操作應該導致相同的答案。爲什麼在這種情況下不是這樣?

有人可以在這方面幫助我嗎?

謝謝,

巴布。

+0

我想你在做什麼與A \ b0是A * pinv(b0) – 2013-03-14 10:48:51

+0

也許你可以顯示你正在談論哪些文件? – 2013-03-14 10:49:26

+1

@AnderBiguri這不會給零作爲輸出,因爲'pinv(b0)'只是一個正標量。 – 2013-03-14 10:51:47

回答

2

您的系統是非常欠定的。

A\b0找到等式的一個解決方案。

pinv(A)*b0 simly發現另一個解決方案。

兩者都是正確的,但顯然他們找到了不同的解決方案,因爲使用了不同的算法。

您可以檢查它們是相同的通過觀察該

A*(A\b0) - A*(pinv(A)*b0) 

實際上爲零

+1

非常多UNDERdefined。一行,多列,所以只有一條信息。 – 2013-03-14 13:34:34

+0

@woodchips當然,我糾正了錯誤。 – 2013-03-22 21:21:55

2

當談到反斜槓,我總是感到困惑。我的補救措施是:明確寫您試圖解決的方程組(至少在最小二乘感中),然後嘗試將其與文檔相匹配。

在你的榜樣,你正在試圖解決系統

A * X = B0

對於這個系統,你有7個未知數,只有一個方程(B0是標量)。 因此,如Dennis指出的那樣,您的系統未被確定,並且期望幾種不同的(但等價的)解決方案是合理的。

+0

感謝您的答案。隨着系統的確定,我們將有無限的解決方案。哪一個是最好的?反斜槓和pinv強加什麼標準來給出相應的答案?如果你看''解決方案,除了一點之外,結果矢量全部爲零。原來這是'x'最大的相同索引。我無法弄清楚這一點。預先感謝您的幫助。 。 。 。 。 – 2013-03-14 11:13:08

+0

@LeaderBabu這裏看起來你有'L1'與'L2'正則化。 – Shai 2013-03-14 11:20:01

+0

@Shai - 不,這不是L1正則化。閱讀我的答案。 – 2013-03-14 17:55:53

1

您的系統欠定。也就是說,有無限多的解決方案。

說你的Am更多列比行。

反斜槓運算符通過將某些m解的未確定分量設置爲零來處理這些系統,參見參考資料。這Source

相反,pinv返回最有可能具有不同零模式的Moore-Penrose A^+反轉A

這就是爲什麼您對於欠定系統的pinv\有所不同。對於超定系統,這些運營商確實給出了相同的解決方案。

2

正如其他人所說,這個系統是不確定的(不是如丹尼斯說的那樣)。既然你有一些後續問題,讓我進一步深入。

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是滿秩的,那麼這兩個解決方案應該與數字垃圾內的相同。這是您已閱讀的內容,但僅適用於過度確定的問題。你的問題不是過度確定的,但是沒有確定。