运算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是不同的...
发布于 2012-11-14 23:22:12
我的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 ~= n的m-by-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 ~= n的m-by-n矩阵,并且A是具有m分量的列向量,或者是具有几个这样的列的矩阵,则X = B/A是欠定或超定方程组XA = B的最小二乘意义上的解。
发布于 2012-11-14 23:12:54
x = inv (A'*A)*A'*B适用于过度确定的系统(即,将A作为带有n>m的n x m矩阵;在这些情况下,A'A是可逆的)。
在你的例子中,你有一个不确定的系统。
那么,会发生什么呢?
我的意见,虽然你可以检查,至少在你的情况下:
当你这样做时,A\B解决了反向意义上的优化问题w.r.t。通常的最小二乘,即
X = argmin_{X \in S} ||X||,其中S是一组解决方案。换句话说,它给出了系统具有最小L^2范数的解。(考虑到您可以手动处理问题,至少在您的情况下是这样)。
https://stackoverflow.com/questions/13380420
复制相似问题