我有37个线性方程和36个变量的矩阵方程形式;A*X=B 。这些方程没有确切的答案。我想使用Matlab最小平方法来找到误差最小的答案。我是Matlab的新手,所以任何意见都会有所帮助。谢谢你的帮助。
如果 A 是满级的,即列的 A 是线性独立的,则过定线性方程组的最小二乘解为
A
A * x = b
可以通过反演法线方程来找到(见 线性最小二乘法):
x = inv(A' * A) * A' * b
如果... A 是没有满级的。A' * A 是不可逆的。相反,我们可以使用 伪逆 的 A
A' * A
x = pinv(A) * b
或Matlab的 左分 经营者
x = A \ b
两者给出的解是一样的,但左除法的计算效率更高。
后两种计算方法也可以处理 在...之下确定的线性方程组,但它们在这种情况下给出的解是不同的。伪反给出的解是: x 具有最小的平方和,而左除算子则给出了一个尽可能多的0系数的解。
x
最一般的解决方法是使用伪逆。
X = pinv(A) * B;
你可以用以下方法计算x:
x = (A'*A)\A'*B