MATLAB如何做拟合?lsqcurvefit函数怎么使用?

2025-11-18 18:07:49

1、教学内容

1. 拟合残差及残差平方和

2. 人口增长模型

2.1 人口指数增长模型——Malthus 模型

2.2 人口阻滞增长模型——Logistics 模型

3. MATLAB实现非线性拟合——lsqcurvefit

4. 寻优算法——局部最优解

5. 拟合效果的评价

6. 土壤含水率问题的分析

7. 结束语——拟合问题总结

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

2、拟合残差及残差平方和

1. 残差:已知的测量点到拟合曲线 y = f(x) 的距离,即拟合值(估计值) 与测量值(观察值) 之差

2. 残差平方和:即残差的平方和:拟合值(估计值) 与测量值(观察值) 之差的平方和

3. 回顾线性拟合教学视频:拟合的定义:求解y = f(x) 里的待定参数,使得残差平方和最小

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

3、人口指数增长模型—— Malthus 模型

人口阻滞增长模型—— Logistics 模型

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

4、案例一:人口预测问题

1. 根据Logistics人口模型:待定参数:r & ym

2. 方程个数(10) 大于未知数个数(2):拟合问题:非线性拟合问题

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

5、MATLAB实现非线性拟合——lsqcurvefit

调用格式——lsqcurvefit(least-squares curve-fitting)

1. 最简单的格式:param=lsqcurvefit(fun, param0, xdata, ydata)

2. 为了便于理解,将help 里的 x / x0 使用param/ param0 替换

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

6、使用lsqcurvefit 实现非线性拟合的基本步骤

1. 给定已知的数据 (x, y) 以及x y 之间满足的函数关系 y = f(x)

1.1 确定 y = f(x) 中的待定参数 param = [r, ym]

1.2 定义拟合函数 y = f(x) : function y = curvefun (param, x)

1.3 给定参数的初值param0:调用lsqcurvefit 求解

2. 计算拟合残差/ 残差平方和

3. 执行结果:得到了局部最小值,lsqcurvefit内部迭代结束(收敛)

4. 拟合的定义 / 目标:残差平方和最小

5. 局部最小值:残差平方和局部最小

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

7、寻优算法——局部最优解

1. 拟合问题:寻找参数:残差平方和最小

2. 不同的初值:可能得到不同的局部最优解

3. 不合理的初值:可能导致求解失败

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

8、拟合效果的评价

1. 不同的参数初值:可能会得到不同的局部最优解

2. 引发两个基本问题

2.1 哪个局部的最优解好?

2.2 局部最优解(拟合数据) 与测量数据的“匹配度”如何?

3. 评价指标

3.1 横向比较不同的局部最优解:拟合的定义是使得残差平方和最小:直接比较resnorm

3.2 拟合数据与测量数据的“匹配度”

3.2.1 计算测量数据与拟合数据之间的标准均方根误差(NRMSE):越接近1 越好

3.2.2 计算测量数据与拟合数据之间的标准均方误差(NMSE):越接近1 越好

3.2.3 MATLAB 实现:系统辨识工具箱里的goodnessOfFit函数

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

9、MATLAB实现非线性拟合——lsqcurvefit

高级调用格式——更多输入设置/ 输出信息

[param, resnorm, residual, exitflag, output] = lsqcurvefit(fun, param0, xdata, ydata, lb, ub, options)

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

10、案例二:土壤含水率问题

参考文献:彭建平,邵爱军. 用MATLAB确定土壤水分特征曲线参数[J]. 土壤(Soils), 2007, 39 (3)

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

11、结束语——拟合问题总结

1. 拟合问题:能转化成线性拟合问题的,绝不使用非线性拟合

1.1 线性拟合

1.1.1 通用方法:求解线性超定方程组

1.1.2 求解线性拟合问题,无需给出参数的初值,算法稳定可靠:全局最优解

1.2 非线性拟合

1.2.1 MATLAB函数:lsqcurvefit/ lsqnonlin/ nlinfit/ fsolve:局部最优解

1.2.2 拟合问题:也可以转化成优化问题:MATLAB 的优化函数求解

1.2.3 求解非线性拟合问题,需要给出待定参数的初值,可能会出现迭代不收敛

2. 初值的选取

2.1 根据函数的形式,使用一部分数据,预估参数的值人口模型的分析

2.2 根据参数的物理意义和建模所用的专业知识,合理确定参数的范围:土壤含水率问题

MATLAB如何做拟合?lsqcurvefit函数怎么使用?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢