对于线性代数中的家庭作业,我使用MATLAB的\
运算符(这是推荐的方法)解决了以下等式:
A = [0.2 0.25; 0.4 0.5; 0.4 0.25]; y = [0.9 1.7 1.2]'; x = A \ y
产生以下答案:
x = 1.7000 2.0800
对于赋值的下一部分,我应该使用最小二乘近似求解相同的等式(然后将其与先前值进行比较,以查看近似值的准确度)。
如何在MATLAB中找到一种方法呢?
之前的工作:我找到了函数lsqlin
,它似乎能够解决上述类型的方程式,但我不明白哪个参数可以提供它,也不知道它的顺序。
答案 0 :(得分:6)
mldivide ,(“ \ ”)实际上也是如此。根据{{3}}:
如果A是m-by-n矩阵,其中m~ = n且B是具有m个分量的列向量,或者是具有多个这样的列的矩阵,则X = A \ B是最小二乘意义上的解对于欠定或超定的方程组AX = B.换句话说,X最小化范数(A * X-B),即矢量AX-B的长度.A的等级k由QR分解确定为列旋转(有关详细信息,请参阅算法)。计算的解X每列最多具有k个非零元素。如果k < n,这通常与x = pinv(A)* B不同,它返回最小二乘解。
所以,你在第一次任务中所做的就是用LSE解决方程式。
答案 1 :(得分:2)
您的作业是否涉及明确编码最小二乘近似,或仅使用MATLAB中提供的其他函数?如果您可以使用其他功能,则可以选择LSQR:
x = lsqr(A,y);