数学建模——拟合算法拓展
cftool工具箱实现快速拟合
如果你的matlab版本是2016+,可以直接在APP中直接找到
如果你是2016以前版本的你可以直接在命令窗口输入cftool,就会弹出工具箱页面
这里是简单的功能介绍
这里可以选择自动生成拟合代码,在文件中调用非常方便
测试案例
这里提供一组数据便于大家进行拟合
按照上述步骤选择合适的拟合方法,利用拟合工具箱会得到以下的拟合结果
我们会发现拟合效果不是很好,后面的偏离程度比较大,这个时候就需要对初始值进行改变。
这里大家一定很好奇为什么改变调整这个值会对拟合效果产生这么大的影响,为什么改变其他的值意义不大,但这个问题我也没有得到一个较为确切的说法,就先用着,等到搞清楚以后会在专门解释一下的。
利用拟合后得到的函数进行预测
预测后三十年的结果就是这样的
这里提供代码
clc;clear
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,92,106.5,123.2,131.7,150.7,179.3,204,226.5,251.4,281.4];
plot(year,population,'o'); %绘制散点图,大概确定拟合方向
cftool; %打开拟合工具箱
[fitresult, gof] = createFit(year, population) %函数调用
t = 2001:2030; %预测后30年
xm = 340.8;
r = 0.02753; %参数带入
predictions = xm./(1+(xm./3.9-1).*exp(-r.*(t-1790))); % 计算预测值
figure(2) %重新声明一个图像避免覆盖
plot(year,population,'o',t,predictions,'.') % 绘制预测结果图
如果发现有错误的地方也欢迎大家一起交流