Matlab,运算符A \ B.

时间:2012-11-14 14:10:06

标签: matlab operators

操作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不同......

2 个答案:

答案 0 :(得分:5)

我的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 - n矩阵,m ~= nBm的列向量   组件,或具有多个这样的列的矩阵,然后是X = A\B   在最小二乘意义上的解决方案对于欠定或超定   方程组AX = B。换句话说,X最小化norm(A*X - B),   向量AX - B的长度。 k的等级A由...确定   带有列旋转的QR分解。计算出的解X具有   每列最多k个非零元素。如果k < n,通常不会   与x = pinv(A)*B相同的解决方案,返回最小二乘法   溶液

     

mrdivide(B,A)和等效的B/A执行矩阵右分割   (正斜线)。 BA必须具有相同的列数。

     

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

     

如果Bm - n矩阵,m ~= nAm的列向量   组件,或具有多个这样的列的矩阵,然后是X = B/A   在最小二乘意义上的解决方案对于欠定或超定   方程组XA = B

答案 1 :(得分:3)

x = inv (A'*A)*A'*B用于已确定的系统(即哪个功能An x m矩阵n>m;在这些情况下{{1}是可逆的)。

在您的情况下,您的已确定系统。


因此,会发生什么?

我的意见,虽然你可以检查,至少在你的情况下

当你A'A时,matlab解决了反义意义上的优化问题w.r.t.通常的最小二乘,即

A\B

其中 X = argmin_{X \in S} ||X||, 是解决方案集。换句话说,它为您提供了具有最小L ^ 2范数的系统的解决方案。 (考虑到您可以手动处理问题,至少在您的情况下)。