MATLAB 自定义函数拟合
首先建立阻滞增长模型
syms x(t) r xm t0 x0eqns=diff(x,t)==r*(1-x/xm)*x;cons=x(t0)==x0;y(t)=simplify(dsolve(eqns,cons));
然后导入数据
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];
然后根据数据确定时间(单位:年)和人口初值(单位:百万)
t0=1790;x0=3.9;y(t)=subs(y);
建议以上代码在普通脚本或命令行输出,方便之后直接粘贴在工具箱中
(在实时脚本输出的公式粘贴需要大改,不太方便)
然后进入函数拟合工具箱
Fig 1.工具箱设置
然后点击左上角的文件->Generate Code生成可复用的函数
将函数文件保存在工作路径下后可使用下列代码使用函数去拟合其他数据,并利用拟合后的方程绘图
此处为了方便对比,使用原有数据进行拟合并往后预测30年
[fitresult, gof] = createFit_self(year, population)t_pre=1790:10:2030;plot(t_pre,fitresult(t_pre),year,population,'+')
Fig2 .函数预测图像