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