5

对于线性代数的家庭作业,我使用 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,它似乎能够解决上述类型的方程,但我不明白要提供哪些参数,也不知道以什么顺序提供。

4

2 回答 2

6

mldivide , (" \ ") 实际上也是这样做的。根据文档

如果 A 是具有 m ~= n 的 m×n 矩阵,并且 B 是具有 m 个分量的列向量,或者具有多个此类列的矩阵,则 X = A\B 是最小二乘意义上的解- 或超定方程组 AX = B。换句话说,X 最小化 norm(A*X - B),即向量 AX - B 的长度。A 的秩 k 由具有列旋转的 QR 分解确定(参见详细算法)。计算的解 X 每列最多有 k 个非零元素。如果 k < n,这通常与 x = pinv(A)*B 的解不同,后者返回最小二乘解。

所以真的,你在第一个作业中所做的是使用 LSE 求解方程。

于 2009-12-02T11:55:40.300 回答
2

您的作业是否涉及显式编码最小二乘近似值,或者仅使用 MATLAB 中可用的另一个函数?如果您可以使用其他功能,一个选项是LSQR

x = lsqr(A,y);
于 2009-12-02T15:19:10.343 回答