一、fittype函数进行自定义拟合
在数学建模的过程中,你会发现仅仅用多项式法进行拟合并不能得到较好的结果,往往需要我们自己得出一个数学模型函数来进行拟合对比。而fittype函数就是专门用来拟合自定义函数。
函数形式:fittype('自定义函数','independent','自变量', 'coefficients', {'系数1','系数2'...})
举例:f = fittype('a./(b+c*(t-45).^2)', 'independent', 't', 'coefficients', {'a', 'b', 'c'});
其中第一项为我们自己定义的函数,第三项为自变量的符号,第五项为系数的一个列表。
函数返回值为你定义的函数模型
二、fit函数进行拟合选项设置
fit函数往往与上方的fittype函数配合在一起使用,它是对拟合选项的设置。
[cfun, 函数输出设置] = fit(x, y, f, '函数输入设置1',输入设置1具体定义,'函数输入设置2',输入设置2具体定义...)
注意:x,y的传入数据必须是列向量形式
函数输出设置我们往往选用rsquare,一般用rsquare即可
函数输入设置可选项较多,这里给出几个常用的选项:
lower:拟合参数的下界限,和参数位置一一对应,如'lower',[580,1.4]表示拟合过程中第一个参数值不小于580,第二个参数值不小于1.4
upper:拟合参数的上界限,和参数位置一一对应,如'upper',[3000,13]表示拟合过程中第一个参数值不大于3000,第二个参数值不大于13
StartPoint:拟合参数初始值,和参数一一对应,如'StartPoint',[250, 520]表示拟合开始的第一个参数值取值为250, 第二个参数值取值为520
注意:当上述参数的范围和拟合初始值都不知道的情况下可全部删去,但这样一来,拟合过程中
的参数初值将由系统随机选取,这有可能会导致拟合结果不可靠。建议在多次试算以确定大致参数范围。
三、拟合图像绘制
xi = [你所需要绘制的x的区间]
yi = cfun(xi)
plot(x,y,'r*',xi,yi,'b-') %将已知点和你自定义函数的拟合曲线一起绘制出,观察拟合效果。
四、代码举例与图像绘制展示
syms t; %自变量t单独定义符号
x = [10 20 30 40 50 60 70 80]; %已知温度值
y = [0.1 0.3 0.7 0.94 0.95 0.68 0.34 0.13]; %已知对应温度值下的转换率
f = fittype('a./(b+c*(t-45).^2)', 'independent', 't', 'coefficients', {'a', 'b', 'c'});
[cfun, rsquare] = fit(x',y',f,'StartPoint',[0.001 0.001 0.001]); %注意这里的x,y为列向量
xi = 10:1:80;
yi = cfun(xi);
plot(x,y,'r*',xi,yi,'b-');
xlabel('温度'),ylabel('转换率')
title('温度与转换率关系图')