数学建模之拟合算法(含matlab源代码)
在 命 令 窗 口 录 入 自 变 量 x 和 函 数 y 的 数 据 , (也可以导入数据)然 后 在Data菜单中即可选中上述数据,并产生Data sets。x y为自变量和因变量,y1为拟合的函数,b0为随机带的数。1、求预测,小样本预测,样本比较少的时候,并且对未来很小范围的预测。2、通过x y坐标不能直接的答案,必须进行求导,也就是先要拟合出x和y之间的关系式才能进一步计算。2、插值主要
目录
一、拟合问题和插值问题区别
1、插值函数过已知点,而拟合函数不一定过已知点;
2、插值主要用于求函数值,而拟合的主要目的是求函数关系,从而进行预测等进一步的分析。
二、拟合计算
曲线拟合需解决如下两个问题:
(1) 线型的选择;
(2) 线型中参数的计算。
线型的选择是拟合计算的关键和难点。通常主要根据专业知识和散点图确定线型。
线 性 拟 合 中 参 数 的 计 算 可 采 用 最 小 二乘法,而非线性拟合参数的计算则要应用Gauss-Newton迭代法。
三、matlab代码
1、多项式拟合
应用举例
x=1:12;
y=[5, 8, 9, 15, 25, 29, 31, 30, 22, 25, 27, 24];
a=polyfit(x,y,9)
xp=1:0.1:12;
yp=polyval(a,xp);
plot(x,y,'.k',xp,yp,'r');
(x,y,9)表示最高此项为9;利用polyval求出系数,a表示系数;然后讲a和需要预测的xp带入polyval求出预测值。
2、非线性拟合
应用举例
x=1:16;
y=[4.00 6.40 8.00 8.80 9.22 9.50 9.70 9.86 10.00 10.20 10.32 10.42 10.50 10.55 10.58 10.60];
y1=@(b,t)b(1)*exp(-t/b(2))+b(3)*exp(-t/b(4))+b(5);
b0=[-1 1 -1 1 1];
a=nlinfit(x,y,y1,b0)
xp=1:0.1:16;
yp=y1(a,xp);
plot(x,y,'.k',xp,yp,'r');
x y为自变量和因变量,y1为拟合的函数,b0为随机带的数。利用nlinfit求出参数后可以带入预测的数。
3、拟合工具箱
命令窗口输入cftool启动
在 命 令 窗 口 录 入 自 变 量 x 和 函 数 y 的 数 据 , (也可以导入数据)然 后 在Data菜单中即可选中上述数据,并产生Data sets。此时工具箱会自动画出散点图。
点击Fitting->New fit,可以修改Fit name, 选择Datasets(自动)和Type of Fit。Apply后即可完成拟合。
若想自定义函数,可以选定Type of Fit中的Custom Equations,然后定义新函数。
应用举例
仍使用上方非线性拟合的数据
点击不同的函数类型,使用不同的方法拟合效果都不同,
R-square和Adjusted R-square越大说明拟合效果越好
四、拟合使用场景
1、求预测,小样本预测,样本比较少的时候,并且对未来很小范围的预测。比如有10年的数据,对未来11年预测。
2、通过x y坐标不能直接的答案,必须进行求导,也就是先要拟合出x和y之间的关系式才能进一步计算。
更多推荐
所有评论(0)