• 法线方程实现最小二乘拟合(Matlab)


    一、问题描述

    利用法线方程实现最小二乘拟合

    二、实验目的

    掌握法线方程方法的原理,能够利用法线方程完成去一组离散数据点的拟合。

    三、实验内容及要求

    1. 对于下面的不一致系统,构造法线方程,计算最小二乘以及2-范数误差。
      [ 3 − 1 2 4 1 0 − 3 2 1 1 1 5 − 2 0 3 ] [ x 1 x 2 x 3 ] = [ 10 10 − 5 15 0 ] \left[

      312410321115203" role="presentation">312410321115203
      \right] \left[
      x1x2x3" role="presentation">x1x2x3
      \right] = \left[
      10105150" role="presentation">10105150
      \right] 343121121020153 x1x2x3 = 10105150

      % 系数矩阵
      A = [3, -1, 2;
           4, 1, 0;
          -3, 2, 1;
           1, 1, 5;
          -2, 0, 3];
      
      % 右侧的常数矩阵
      B = [10; 10; -5; 15; 0];
      
      % 使用最小二乘法求解
      X = lsqlin(A, B);
      
      % 计算法线方程的系数
      a = X(1);
      b = X(2);
      c = X(3);
      
      fprintf('构造的法线方程: %.2fx + %.2fy + %.2fz\n', a, b, c);
      fprintf('最小二乘解: x1 = %.2f, x2 = %.2f, x3 = %.2f\n', X(1), X(2), X(3));
      
      % 计算2-范数误差
      error = norm(A * X - B, 2);
      fprintf('2-范数误差为: %.2f\n', error);
      
    2. 如下为日本2023 年的每月石油消耗数据。
      利用周期模型y = c1 + c2 * cos2𝜋 + c3 * sin2𝜋 + c4 * cos4𝜋进行拟合,并计算RMSE

      monthoil use (10^6 bbl/day)
      Jan6.224
      Feb6.665
      Mar6.241
      Apr5.302
      May5.073
      Jun5.127
      Jul4.994
      Aug5.012
      Sep5.108
      Oct5.377
      Nov5.510
      Dec6.372
      % 输入数据
      month = 1:12;
      oil_use = [6.224, 6.665, 6.241, 5.302, 5.073, 5.127, 4.994, 5.012, 5.108, 5.377, 5.51, 6.372];
      
      % 构造周期模型
      A = [ones(12, 1), cos(2 * pi * month'/12), sin(2 * pi * month'/12), cos(4 * pi * month'/12)];
      
      % 使用最小二乘法求解
      c = lsqlin(A, oil_use);
      
      % 构造法线方程
      y_fit = c(1) + c(2) * cos(2 * pi * month/12) + c(3) * sin(2 * pi * month/12) + c(4) * cos(4 * pi * month/12);
      
      % 计算RMSE
      rmse = sqrt(mean((oil_use - y_fit).^2));
      
      fprintf('构造的法线方程: y = %.4f + %.4f * cos(2*pi*x/12) + %.4f * sin(2*pi*x/12) + %.4f * cos(4*pi*x/12)\n', c(1), c(2), c(3), c(4));
      fprintf('最小二乘解: c1 = %.4f, c2 = %.4f, c3 = %.4f, c4 = %.4f\n', c(1), c(2), c(3), c(4));
      fprintf('RMSE: %.4f\n', rmse);
      

    四、算法原理

    给出法线方程进行数据拟合的过程。

    背景:
    数据拟合是一种通过数学模型来近似描述和预测现有数据的方法。法线方程(Normal Equation)是一种常用于最小二乘法(Least Squares)的工具,用于找到最优拟合参数,以最小化观测数据与模型预测之间的误差。

    法线方程的基本形式:
    对于一个线性模型,假设我们有一个包含m个样本的矩阵X(设计矩阵)和一个包含目标变量的列向量y,线性模型可以表示为:

    y = X β + ε y = X \beta + \varepsilon y=+ε

    其中, y y y 是目标变量, X X X 是设计矩阵, β \beta β 是待求参数向量, ε \varepsilon ε 是误差向量。最小二乘法的目标是找到最优的 β \beta β,使得误差的平方和最小。

    法线方程的推导:
    法线方程通过对最小二乘问题的偏导数为零的条件进行求解而得到。对于线性回归问题,法线方程可以写作:

    X T X β = X T y X^T X \beta = X^T y XT=XTy

    其中, X T X^T XT 表示矩阵 X X X 的转置。解这个方程可以得到最优的参数向量 β \beta β

    法线方程的拟合过程:

    1. 构造设计矩阵 (X): 将样本数据按照模型的形式构造成设计矩阵。每一行对应一个样本,每一列对应一个特征。

    2. 构造目标变量向量 (y): 将观测到的目标变量按照样本顺序构造成列向量。

    3. 计算法线方程: 使用法线方程 X T X β = X T y X^T X \beta = X^T y XT=XTy 求解参数向量 β \beta β。这可以通过直接求解方程或者使用矩阵运算库中的函数来完成。

    4. 得到最小二乘解: 将得到的参数向量 β \beta β 代入线性模型,得到最小二乘拟合的结果。

    5. 评估拟合效果: 可以使用各种评估指标,如均方根误差(RMSE)、残差分析等,来评估拟合模型与实际数据之间的拟合质量。

    优势和注意事项:

    • 优势: 法线方程提供了一种解决最小二乘问题的直观数学方法,具有简单、清晰的数学推导过程。

    • 注意事项: 在实际应用中,需要确保模型假设的合理性,避免过拟合或欠拟合。此外,若设计矩阵 X T X X^T X XTX 不可逆,可能需要考虑正则化方法。

    总结:
    法线方程作为最小二乘法的数学基础,为数据拟合提供了可靠的理论支持。通过构造法线方程,我们能够得到最优参数,实现对数据的准确拟合。在实际应用中,理解法线方程的原理对于建立有效的拟合模型至关重要。

    五、测试数据及结果
    1.给出构造的法线方程、最小二乘解、2-范数误差;
    请添加图片描述

    2.给出构造的法线方程、最小二乘解、RMSE.
    请添加图片描述

    六、总结与思考

    法线方程作为最小二乘法的数学基础,为数据拟合提供了可靠的理论支持。通过构造法线方程,我们能够得到最优参数,实现对数据的准确拟合。在实际应用中,理解法线方程的原理对于建立有效的拟合模型至关重要。

  • 相关阅读:
    深度学习基础学习-1x1卷积核的作用(CNN中)
    接口测试经验分享
    深入理解强化学习——强化学习的历史:近代强化学习的发展
    ​力扣解法汇总1779. 找到最近的有相同 X 或 Y 坐标的点
    JDBC最详讲解(快速入门)
    最长有效括号【python版】
    WebRTC系列补充--native重采样
    07_整合spring boot
    JWT(JSON Web Token)原理、使用方法及使用注意事项
    pycharm使用
  • 原文地址:https://blog.csdn.net/m0_73898917/article/details/139353212