9

运算 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 是不同的......

4

2 回答 2

5

我的 MATLAB (R2010b) 说了很多关于做什么A\B

mldivide(A,B)和等效的A\B执行矩阵左除法(反斜杠)。A并且B 必须是具有相同行数的矩阵,除非A是标量,在这种情况下A\B执行元素除法,即A\B = A.\B.

IfA是一个方阵,A\B与 大致相同inv(A)*B,只是它的计算方式不同。如果A是一个nn矩阵并且B是一个包含元素的列向量n,或者是一个包含多个此类列的矩阵,则X = A\B是方程的解AX = B。如果A缩放不当或几乎是单一的,则会显示一条警告消息。

如果A是一个mn矩阵,m ~= n并且B是一个具有分量的列向量m ,或者是一个具有几个这样的列的矩阵,则X = A\B是对欠定或超定方程组的最小二乘意义上的解AX = B。换句话说,X最小化norm(A*X - B),向量的长度AX - B。的等级kA具有列旋转的 QR 分解确定。计算的解决方案每列X最多具有k非零元素。如果k < n,这通常与 不同的解x = pinv(A)*B,后者返回最小二乘解。

mrdivide(B,A)和等效的B/A执行矩阵右除法(正斜杠)。B并且A必须具有相同的列数。

如果A是方阵,B/A则与 大致相同B*inv(A)。如果A是一个nn矩阵并且B是一个包含元素的行向量n,或者是一个包含多个此类行的矩阵,则是通过部分旋转的高斯消元法计算X = B/A的方程的解 。XA = B如果A缩放不当或几乎是单一的,则会显示一条警告消息。

如果B是一个mn矩阵,m ~= n并且A是一个具有分量的列向量m ,或者是一个具有几个这样的列的矩阵,则X = B/A是对欠定或超定方程组的最小二乘意义上的解XA = B

于 2012-11-14T15:22:12.133 回答
3

x = inv (A'*A)*A'*B适用于过度确定的系统(即,A作为n x m矩阵的特征n>m; 在这些情况下A'A是可逆的)。

在你的情况下,你有一个未确定的系统。


因此,可能会发生什么?

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

当您执行A\Bmatlab 解决通常的最小二乘法的逆向优化问题时,即

 X = argmin_{X \in S} ||X||,

S解的集合在哪里。换句话说,它为您提供了具有最小 L^2 范数的系统的解决方案。(考虑到您可以手动处理问题,至少在您的情况下)。

于 2012-11-14T15:12:54.187 回答