【问题标题】:How do I use the least squares approximation in MATLAB?如何在 MATLAB 中使用最小二乘逼近?
【发布时间】:2009-12-02 11:47:50
【问题描述】:

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

【问题讨论】:

    标签: math matlab linear-algebra least-squares


    【解决方案1】:

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

    如果 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

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

    【讨论】:

    • 当然,实际分配比我们想象的要简单。你是对的, `` 运算符确实涉及最小二乘近似。我们现在已经得到了正确的答案,所以谢谢!
    • 这应该是“\ operator”,但似乎代码格式化反引号吞噬了整个反斜杠(或者我可能只是错过了一次击键)。
    【解决方案2】:

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

    x = lsqr(A,y);
    

    【讨论】:

      猜你喜欢
      • 2011-05-31
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多