我有37个线性方程和36个变量以矩阵方程的形式; A * X = B.方程式没有确切的答案。我想使用Matlab最小二乘法找到误差最小的答案。我是Matlab的新手,所以任何评论都会有所帮助。谢谢
答案 0 :(得分:9)
如果A
是满秩的,即A
的列是线性无关的,那么超定线性方程组的最小二乘解
A * x = b
通过反转正规方程可以找到
x = inv(A' * A) * A' * b
如果A
不是满级,则A' * A
不可逆。相反,可以使用A
x = pinv(A) * b
或Matlab的left-division运算符
x = A \ b
两者都提供相同的解决方案,但左侧划分的计算效率更高。
后两种计算方法也可以处理 确定的线性方程组,但在这种情况下它们给出不同的解:伪逆给出x
具有最小和的解正方形,而左除运算符给出一个尽可能多的0系数的解。
答案 1 :(得分:5)
解决此问题的最常用方法是使用pseudoinverse:
X = pinv(A) * B;
答案 2 :(得分:3)
您可以通过以下方式计算x:
x = (A'*A)\A'*B