[英]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.