3

我有 37 个线性方程和 36 个矩阵方程形式的变量;A*X=B。方程没有确切的答案。我想使用 Matlab 最小二乘法找到误差最小的答案。我是 Matlab 的新手,所以任何评论都会有所帮助。谢谢

4

3 回答 3

9

如果A是满秩的,即 的列A是线性独立的,则超定线性方程组的最小二乘解

A * x = b

可以通过反转正规方程得到(参见线性最小二乘法):

x = inv(A' * A) * A' * b

如果A不是满秩,A' * A则不可逆。相反,可以使用的伪A

x = pinv(A) * b

或 Matlab 的左除运算符

x = A \ b

两者都给出相同的解决方案,但左除法的计算效率更高。

后两种计算方法也可以处理未确定的线性方程组,但在这种情况下它们给出了不同的解:伪逆给出了平方和最小的解x而左除算子给出了具有尽可能多的解0 系数尽可能。

于 2015-05-19T20:17:36.710 回答
5

解决这个问题的最通用方法是使用伪逆:

X = pinv(A) * B;
于 2015-05-19T20:03:27.803 回答
3

您可以通过以下方式计算 x:

x = (A'*A)\A'*B

于 2015-05-19T19:45:47.067 回答