天天看点

matlab做三次拉格朗日插值多项式_从零开始的matlab学习笔记——(24)曲线拟合...

matlab应用——求极限,求导,求积分,解方程,函数绘图,三维图像,拟合函数....更多内容尽在个人专栏:

matlab学习

才发现这个数据插值的返回值不是个函数表达式,是一系列点集,不能使用polyval函数预测值。

上一节我们说了数据插值,这一节我们再说一个差不多的东西,叫曲线拟合

曲线拟合:

先看一下百度百科的定义:

曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。

主要方法就是我们高中学过的

最小二乘法

我们先生成一系列离散数据点:

x=1790:10:2010

y=[3 5 7 9 12 13 15 16 18 21 23 37 24 29 30 28 33 34 36 38 39 44 42]

plot(x,y,'r.')

matlab做三次拉格朗日插值多项式_从零开始的matlab学习笔记——(24)曲线拟合...

polyfit函数:

polyfit函数用于进行曲线拟合,调用格式和插值函数interp1相似

polyfit(x,y,n),

x,y构成离散数据点(x,y),n则是设定用n次多项式进行拟合,比如n=3就是用最高三次多项式进行拟合。

现在对上面的离散数据点进行拟合:

x=1790:10:2010

y=[3 5 7 9 12 13 15 16 18 21 23 37 24 29 30 28 33 34 36 38 39 44 42]

f=polyfit(x,y,3) %用f记录拟合后的函数

x1=1790:0.2:2010 %重新定义自变量x1

y1=polyval(f,x1) %重新定义因变量y1

plot(x,y,'r*',x1,y1,'b')

为了区分,这里plot函数把原来的数据点也画进去:

matlab做三次拉格朗日插值多项式_从零开始的matlab学习笔记——(24)曲线拟合...

这里我们还可以预测后面的数据

比如要求2020年的数据:

ans=polyval(f,2020)

结果就是:

matlab做三次拉格朗日插值多项式_从零开始的matlab学习笔记——(24)曲线拟合...

这里简单说一说数据插值和曲线拟合的

异同

同:两者都是

函数逼近

的方法,都可以对未知数据点进行

合理的预测

,但都会有

一定的误差

异:插值需要的数据点相比曲线拟合

较少

插值要求函数

必须经过

所有已知数据点,拟合不需要

最后再补充一点,可能会有知友发现插值和拟合的多项式函数都采用

三次多项式。

首先,次数低于3,多项式拟合程度较差,不容易进行准确的拟合和插值

其次,多项式函数并非越高越好,这里有个

Runge现象

,即多项式函数次数越高,越容易产生振荡而偏离原函数,使得误差增大

到这里我们简单梳理了插值和拟合两种函数处理方式,下一节的内容暂定,我们可能要再回到符号计算。

欢迎喜欢的朋友

点赞关注收藏

啊:)

继续阅读