我有37个线性方程和36个变量,以矩阵方程的形式存在;A*X=B。这些方程没有确切的答案。我想用Matlab最小二乘法求出误差最小的解。我是Matlab的新手,所以任何评论都会有所帮助。谢谢
发布于 2015-05-20 04:17:37
如果A是满秩的,即A的列是线性独立的,则超定线性方程组的最小二乘解
A * x = b可以通过反转法线方程来找到(参见Linear Least Squares
x = inv(A' * A) * A' * b如果A不是满秩的,则A' * A是不可逆的。相反,可以使用A的pseudoinverse
x = pinv(A) * b或Matlab的left-division运算符
x = A \ b这两种方法都给出了相同的解决方案,但左除法的计算效率更高。
后两种计算方法也可以处理_under_determined线性方程组,但它们在这种情况下给出了不同的解决方案:伪逆给出了x具有最小平方和的解,而左除运算符给出了具有尽可能多的0系数的解。
发布于 2015-05-20 04:03:28
解决这个问题的最普遍的方法是使用伪逆:
X = pinv(A) * B;发布于 2015-05-20 03:45:47
您可以通过以下方式计算x:
x = (A'*A)\A'*B
https://stackoverflow.com/questions/30334707
复制相似问题