繁体   English   中英

Matlab,运算符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执行矩阵左划分(反斜杠)。 AB必须是具有相同行数的矩阵,除非A是标量,在这种情况下A\\B执行逐元素除法 - 即A\\B = A.\\B

如果A是方阵,则A\\Binv(A)*B大致相同,除非它以不同的方式计算。 如果An by- n矩阵, B是具有n元素的列向量,或者是具有多个这样的列的矩阵,则X = A\\B是等式AX = B的解。 如果A严重缩放或几乎是单数,则会显示警告消息。

如果Am by- n矩阵,其中m ~= nB是具有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执行矩阵右除(正斜杠)。 BA必须具有相同的列数。

如果A是方阵,则B/AB*inv(A)大致相同。 如果An by- n矩阵, B是具有n元素的行向量,或者是具有多个这样的行的矩阵,那么X = B/A是通过高斯消除和部分旋转计算的等式XA = B的解。 。 如果A严重缩放或几乎是单数,则会显示警告消息。

如果Bm m ~= nm 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM