数学建模模型8——回归1 cftool工具箱

半城伤御伤魂 提交于 2020-02-02 17:28:47

启动方法:

命令行窗口输入cftool

在这里插入图片描述

拟合数据

示例 1

假设我们要拟合的函数形式是 y=Ax^2 + Bx, 且 A>0, B>0。
数据:

x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447 296.204 311.5475];
y=[5 10 15 20 25 30 35 40 45 50];

进入曲线拟合工具箱界面“Curve Fitting tool”:
1)利用 X data 和 Y data 的下拉菜单读入数据 x,y,这时会自动画出数据集的曲线图,注意右侧的 Auto fit 选项;
在这里插入图片描述
2)通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类型有:

  • Custom Equations:用户自定义的函数类型

  • Exponential:指数逼近,有 2 种类型,aebxae^{bx}aebx+cedxae^{bx}+ce^dx

  • Fourier:傅立叶逼近,有 7 种类型,基础型是a0+a1cos(xw)+b1sin(xw)a_0+a_1cos(xw)+b_1sin(xw)

  • Gaussian:高斯逼近,有 8 种类型,基础型是 a1e(xb1c1)2a_1e^-({\frac{x-b_1}{c_1}})^2

  • Interpolant:插值逼近,有 4 种类型,linear、nearest neighbor、cubic spline、shape-preserving

  • Polynomial:多形式逼近,有 9 种类型,linear polynomial、quadratic polynomial、cubic polynomial 以及 4-9th degree polynomial

  • Power:幂逼近,有 2 种类型,axbax^baxb+cax^b+c

  • Rational:有理数逼近,分子(Numerator)、分母(Denominator)共有的类型是 linear rational、quadratic rational、cubic rational、4-5th degree rational;此外,分子(Numerator)还包括 constant 型

  • Smoothing Spline:平滑样条逼近

  • Sum of Sin Functions:正弦曲线逼近,有 8 种类型,基础型是a1sin(b1x+c1)a_1sin(b_1x+c_1)

  • Weibull:只有一种,abxb1eaxbabx^{b-1}e^{-ax^{b}}

3)选择好所需的拟合曲线类型及其子类型,并进行相关设置:

  • 如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数;
  • 如果选 Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear Equations 线性等式”和“General
    Equations 构造等式”两种标签。

在本例中选 Custom Equations,点击“New”按钮,选择“General Equations” 标签,输入函数类型 y=ax2+bxy=ax^2 + bx,设置参数 a、b 的上下限(注意这里我们假设规定 a>0, b>0,实际不一定如此!),然后点击 OK。

4)类型设置完成后,点击“Apply”按钮,就可以在 Results 框中得到拟合结果如下:

在这里插入图片描述

Results中的结果显示拟合模型、参数以及拟合效果:

  • SSE:拟合误差平方和,接近0,表示与数据拟合的好,但是要小心过拟合;
  • R-Square:实测数据与推理数据之间的相关系数平方值,趋近于1较好;
  • RMSE:均方差
  • #Coeff:模型的系数数量(非自定义模型时出现),相近拟合效果选择数量少的,防止过拟合。

如果觉得拟合效果不好,可以重新选择设置进行拟合。这样,就完成一次曲线拟合。

示例 2

使用拟合曲线的类型为 3 次多项式拟合。
在本例中先选“polynomial”,再选择Degree 3,然后点击OK。类型设置完成后,点击“Apply”按钮,就可以在 Results 框中得到拟合结果如下:
在这里插入图片描述
作为比较,我们使用 polyfit 函数编程:

>> format long
>> A = polyfit(x, y, 3);
>> format short
>> z = polyval(A, x);
>> plot(x, y, 'bd', x, z, 'r');

结果:
A为模型参数,与cftool结果一致
在这里插入图片描述
在这里插入图片描述

References:

http://math.ecnu.edu.cn/~fywan/teaching/common_model2015/model/model06_CFtool.pdf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!