🔆 文章首发于我的个人博客:欢迎大佬们来逛逛
数学建模:拟合算法
文章目录
拟合算法
根据1到12点间的温度数据求出温度与时间之间的近似函数关系 F ( t ) F(t) F(t),由 F ( t ) F(t) F(t) 推断 t =13.5 时的温度。这种根据离散数据求数据间近似函数关系的问题称为曲线拟合问题。
拟合问题与插值问题的区别在于:
- 插值函数过已知点,而拟合函数不一定过已知点.
- 插值主要用于求函数值,而拟合的主要目的是求函数关系 ,从而进行预测等进一步的分析。
多项式拟合
matlab
[p,S] = polyfit(x,y,n);
x和y是被拟合数据的自变量和因变量;n为拟合多项式的次数;a为拟合多项式系数构成的向量;S为 分 析 拟 合 效 果 所需的指标(可省略)。
matlab
%% 多项式拟合,使用cftool工具箱
clc;clear;
x=0:0.1:1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
%%
[p,~] = polyfit(x,y,2);
xp = 0:0.1:1;
yp = polyval(p,xp);
plot(x,y,'.k',xp,yp,'r');
非线性拟合
matlab
clc;clear;
% 指定函数拟合步骤
% (1) 输入待拟合数据x,y
%(2)指定函数关系式
syms t;
x=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15];
y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.09;0.032;-0.015;-0.02];%指定函数形式为f(t)=acos(kt)e^(wt),进行拟合
f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'});
cfun=fit(x,y,f) %显示拟合函数
xi=0:.1:20;
yi=cfun(xi);
plot(x,y,'r*',xi,yi,'b-');