- 拟合是已知点列,从整体上靠近它们,不要求曲线经过每个样本点,但要保证误差足够小
- 已知一组数据,寻求一个y=f(x),使f(x)在某种准则下与所有数据点最为接近
- 拟合的准则是使yi与f(xi)的距离的平方和最小,称为最小二乘准则
若函数对参数线性(参数仅以一次方形式出现,且不能乘以或除以其他任何参数,并不能出现参数的复合函数形式),则可以用拟合优度来衡量拟合的好坏,其值越接近于1,说明拟合的越好
若不能用拟合优度,就用SSE的大小来衡量,SSE越小越好
Matlab拟合工具箱:Curve Fitting Tool
输入命令cftool
读入x、y的数据,选择合适的函数形式进行拟合
函数选择原则:
当散点图走势是直线,优先选择线性拟合,评价指标为SSE和R^2,SSE越小、R^2越大越好
其他的函数选择条件是SSE越小越好,函数形式应当越简单越好
例题:
year = 1790:10:2000; population = [3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4]; plot(year,population,'o') cftool % 拟合工具箱 % 点击Fit Options,修改非线性最小二乘估计法拟合的初始值(StartPoint), r修改为0.02,xm修改为500 % Generate Code生成createFit.m文件 % 复制第一句的function后边语句 % function [fitresult, gof] = createFit(year, population) [fitresult, gof] = createFit(year, population) t = 2001:2030; xm = 342.4; r = 0.02735; predictions = xm./(1+(xm./3.9-1).*exp(-r.*(t-1790))); % 计算预测值(写成点乘/点除) figure(2) plot(year,population,'o',t,predictions,'.') % 绘制预测结果图
预测结果: