实验名称: 最小二乘拟合
专业: 电气工程及其自动化
姓名: 曾文博
学号: 3230105669
日期: 2025.3.22

1 引言

在科学计算、数据分析和工程应用领域,通过已知的离散数据点建立数学模型是一个常见且重要的问题。最小二乘法作为一种基础的数值方法,通过最小化误差平方和来确定模型参数,从而获得最优的函数拟合效果。从简单的线性拟合到复杂的非线性模型,不同的拟合方法在精度、计算复杂度和适用场景上各有特点。
本实验实现了指数模型的最小二乘拟合,通过对数变换将非线性问题转化为线性问题,并通过实际数据的拟合比较,系统地分析了该方法的精度表现和适用条件。

2 实验目的和要求

如题目所示,实验要求编写MATLAB程序实现对某类疾病发生率y%和年龄段x之间形如的关系进行拟合。具体要求:
  1. 使用最小二乘法确定模型参数a和b
  1. 计算相应的均方误差与最大偏差
  1. 对拟合结果进行可视化呈现

3 算法描述

本实验采用了模块化的程序设计方法,主要包含以下步骤:
  1. 数据输入与预处理:读取用户输入的x、y数组,并进行对数变换
  1. 构建正规方程:基于线性化后的方程建立正规方程组
  1. 求解参数:通过矩阵运算求解正规方程,获得模型参数
  1. 误差分析:计算拟合值、残差、均方误差和最大偏差
  1. 结果可视化:绘制原始数据点和拟合曲线,展示误差信息

4 程序代码及注释

完整代码见.m文件

4.1 数据输入模块

该部分实现用户交互,提示用户输入x和y数组数据。

4.2 数据预处理模块

转化为ln(y)=ln(a)+bx的形式,便于使用线性最小二乘法。

4.3 最小二乘核心计算模块

4.4 误差分析模块

4.5 结果可视化模块

5 算例分析

实验结果显示:
  1. 拟合方程:
  1. 均方误差(MSE):77.31
  1. 最大偏差:27.30
notion image
从拟合效果图可以看出,在x值较小的区域(x<10),拟合效果相对较好;但在x值较大的区域,特别是x>15时,拟合曲线与实际数据点的偏差逐渐增大。

6 讨论与结论

本实验实现了指数模型的最小二乘拟合。结合理论课程和实验结果,我们发现:
  1. 较大的MSE值(77.31)提示我们所选择的指数模型可能不是最优选择。
  1. 改进建议:
      • 考虑使用更复杂的模型,如复合指数模型或分段模型
      • 对异常数据点进行预处理
      • 引入其他评价指标来综合评估模型效果
最后,这是本人第二次使用MATLAB独立完成数值计算的完整程序。通过实践发现,即使是看似简单的拟合问题,也需要考虑诸多细节。在人工智能时代,虽然很多编程任务可以借助AI完成,但亲自动手编程的经历让我更深入地理解了数值计算的原理和实现细节。此外,通过实验也加深了对最小二乘法理论的理解,验证了"理论指导实践"的重要性。最后曲线的mse值较大,这启示我们其它的拟合模型或者分段拟合或许会有更好的效果。

参考文献

[1] Chapra, S. C., & Canale, R. P. (2015). Numerical Methods for Engineers. McGraw-Hill Education.
[2] 李庆扬, 王能超, 易大义. (2000). 数值分析. 华中科技大学出版社.

7.反思与再思考

在实验过程中,我注意到了一个重要的数值计算问题:病态方程和数值不稳定。具体表现为:
  • 在对数变换过程中,原始数据中的微小误差会被放大
  • 矩阵求逆运算可能因为条件数较大而产生数值不稳定(Cond(A)=570)
notion image
  • 当数据跨度较大时,计算精度会显著下降
为了解决这些问题,我尝试了以下方法:
  1. 使用MATLAB的内置函数fit()和lsqcurvefit()进行拟合,效果很好
  1. 学习MATLAB内置函数的算法
  1. 尝试对数据进行预处理和归一化,尝试复现MATLAB数值稳定的方法
然而,即使采用这些改进方法,仍然无法完全复现理想的拟合效果。这个经历让我深刻认识到:在数值计算中,算法的稳定性和数值精度问题往往比算法本身的选择更为关键。这也启发我在今后的数值计算中要更加注意考虑计算的条件数和稳定性问题。

下面附上Matlab内置函数的源代码,我复现了内置函数的大部分功能,最后没有用matlab调用的那个internal函数;最终程序还是效果不佳。
未解决,留给后人回答吧()
 
Loading...
Z_cosy
Z_cosy
浙江大学电气工程学院本科生
最新发布
Dairy
2025-4-9
MATH
2025-3-23
English
2025-3-21
Courses
2025-3-21
公告
🎉Welcome to Z-cosy🎉
-- 食用指南 ---
目前只有课程笔记以及电控学习笔记
陆续会整理更多内容!