[英]matlab and octave operator precedence of mldivide: a*A\b gives (a*A)^-1*b instead of a*inv(A)*b
[英]Matlab, operator A\B
操作A \\ B的結果是什么,其中A(1,m)和B(1,m)?
在手冊中寫道:
A\B returns a least-squares solution to the system of equations A*x= B.
所以它意味着x = inv(A'* A)* A'* B? 但是,矩陣A'* A是單數的......
讓我們假設:
A=[1 2 3]
B=[6 7 6]
A\B
0 0 0
0 0 0
2.0000 2.3333 2.0000
如果使用MLS:
C = inv (A'*A) singular matrix
C = pinv(A'*A)
0.0051 0.0102 0.0153
0.0102 0.0204 0.0306
0.0153 0.0306 0.0459
D= C*A'*B
0.4286 0.5000 0.4286
0.8571 1.0000 0.8571
1.2857 1.5000 1.2857
所以結果A \\ B和inv(A'* A)* A'* B是不同的......
我的MATLAB(R2010b)說了很多關於A\\B
作用:
mldivide(A,B)
和等效的A\\B
執行矩陣左划分(反斜杠)。A
和B
必須是具有相同行數的矩陣,除非A
是標量,在這種情況下A\\B
執行逐元素除法 - 即A\\B = A.\\B
如果
A
是方陣,則A\\B
與inv(A)*B
大致相同,除非它以不同的方式計算。 如果A
是n
by-n
矩陣,B
是具有n
元素的列向量,或者是具有多個這樣的列的矩陣,則X = A\\B
是等式AX = B
的解。 如果A
嚴重縮放或幾乎是單數,則會顯示警告消息。如果
A
是m
by-n
矩陣,其中m ~= n
,B
是具有m
分量的列向量,或者是具有多個這樣的列的矩陣,那么X = A\\B
是最小二乘意義下的解決方案。 - 或超定方程組AX = B
換句話說,X
最小化norm(A*X - B)
,即矢量AX - B
的長度。A
的等級k
由具有列旋轉的QR分解確定。 計算的解X
每列最多具有k
非零元素。 如果k < n
,這通常與x = pinv(A)*B
,它返回最小二乘解。
mrdivide(B,A)
和等效B/A
執行矩陣右除(正斜杠)。B
和A
必須具有相同的列數。如果
A
是方陣,則B/A
與B*inv(A)
大致相同。 如果A
是n
by-n
矩陣,B
是具有n
元素的行向量,或者是具有多個這樣的行的矩陣,那么X = B/A
是通過高斯消除和部分旋轉計算的等式XA = B
的解。 。 如果A
嚴重縮放或幾乎是單數,則會顯示警告消息。如果
B
是m
m ~= n
的m
by-n
矩陣,A
是具有m
分量的列向量,或者是具有多個這樣的列的矩陣,則X = B/A
是最小二乘意義下的解決方案。 - 或超定方程組XA = B
x = inv (A'*A)*A'*B
無二超定系統(即其中設有A
作為nxm
與矩陣n>m
;在這些情況下A'A
是可逆的)。
在您的情況下,您有一個未確定的系統。
那么,會發生什么?
我的意見,雖然你可以檢查,至少在你的情況下 :
當你做A\\B
matlab解決了與通常的最小二乘相反的優化問題,即
X = argmin_{X \in S} ||X||,
其中S
是一組解決方案。 換句話說,它為您提供了具有最小L ^ 2范數的系統的解決方案。 (考慮到您可以手動處理問題,至少在您的情況下)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.