如何利用matlab解决插值拟合中的龙格现象
作者&投稿:犁光 (若有异议请与网页底部的电邮联系)
如何利用matlab解决插值拟合中的龙格现象~
1
启动matlab编程窗口
启动matlab,新建一个m程序文件。
具体操作:File → New → Script (如第一幅图)
第二幅图为编写程序代码的m文件窗口
2
编制插值函数的程序
编写插值程序代码,插值次数分别为2、4、6、8、10、12,原函数为f(x)=1/(1+25*x^2)。采用的是拉格朗日插值法,插值区间为[-1,1],插值节点为等距节点。
3
运行程序
选择变成窗口的菜单:Debug → Run Untitled3 运行程序。
运行程序也可以使用快捷按钮(绿色箭头按钮),如图二。
4
插值结果
按照上一步运行程序,即可得到原函数与插值函数的图像,如图。
5
龙格现象
从第四步的插值结果可以看出,在拉格朗日基函数的高次插值中,在插值区间的边界部分插值函数会出现很大波动,明显偏离原函数,所以拉格朗日插值次数不宜过高。
我们把高次插值边界出现这种波动的现象叫做龙格现象,龙格现象说明插值不准确,在实际中要尽量避免
解决龙格现象
1
避免龙格现象的方法
为避免出现龙格现象,我们对拉格朗日插值基函数的插值节点做一个调整。采用切比雪夫零点插值。这样就可以避免出现龙格现象。
2
编制切比雪夫零点的拉格朗日插值函数
本次编程,只需在上面的程序做局部修改,将等距节点替换为切比雪夫零点作为插值节点。其他基本不变。
3
运行修改后程序
在运行修改后的程序之前记得要先保存哦!
运行方法和上面讲的一样,本次就选用快捷方法,即直接按绿色箭头。
4
运行结果:没出现龙格现象
运行后的图像,在高次插值中,插值区间的边界区域,插值函数没有很大的偏离原函数,从后面运行的结果可以看出没有在出现龙格现象。在本次插值中,使用切比雪夫零点替换了原先的等距节点,避免了龙格现象的出现。
解决龙格现象
1
避免龙格现象的方法
为避免出现龙格现象,我们对拉格朗日插值基函数的插值节点做一个调整。采用切比雪夫零点插值。这样就可以避免出现龙格现象。
2
编制切比雪夫零点的拉格朗日插值函数
本次编程,只需在上面的程序做局部修改,将等距节点替换为切比雪夫零点作为插值节点。其他基本不变。
3
运行修改后程序
在运行修改后的程序之前记得要先保存哦!
运行方法和上面讲的一样,本次就选用快捷方法,即直接按绿色箭头。
4
运行结果:没出现龙格现象
运行后的图像,在高次插值中,插值区间的边界区域,插值函数没有很大的偏离原函数,从后面运行的结果可以看出没有在出现龙格现象。在本次插值中,使用切比雪夫零点替换了原先的等距节点,避免了龙格现象的出现。
样条插值应该能很好的解决问题才对
为什么不行呢
你把数据和代码发上来看看
1
启动matlab编程窗口
启动matlab,新建一个m程序文件。
具体操作:File → New → Script (如第一幅图)
第二幅图为编写程序代码的m文件窗口
2
编制插值函数的程序
编写插值程序代码,插值次数分别为2、4、6、8、10、12,原函数为f(x)=1/(1+25*x^2)。采用的是拉格朗日插值法,插值区间为[-1,1],插值节点为等距节点。
3
运行程序
选择变成窗口的菜单:Debug → Run Untitled3 运行程序。
运行程序也可以使用快捷按钮(绿色箭头按钮),如图二。
4
插值结果
按照上一步运行程序,即可得到原函数与插值函数的图像,如图。
5
龙格现象
从第四步的插值结果可以看出,在拉格朗日基函数的高次插值中,在插值区间的边界部分插值函数会出现很大波动,明显偏离原函数,所以拉格朗日插值次数不宜过高。
我们把高次插值边界出现这种波动的现象叫做龙格现象,龙格现象说明插值不准确,在实际中要尽量避免
解决龙格现象
1
避免龙格现象的方法
为避免出现龙格现象,我们对拉格朗日插值基函数的插值节点做一个调整。采用切比雪夫零点插值。这样就可以避免出现龙格现象。
2
编制切比雪夫零点的拉格朗日插值函数
本次编程,只需在上面的程序做局部修改,将等距节点替换为切比雪夫零点作为插值节点。其他基本不变。
3
运行修改后程序
在运行修改后的程序之前记得要先保存哦!
运行方法和上面讲的一样,本次就选用快捷方法,即直接按绿色箭头。
4
运行结果:没出现龙格现象
运行后的图像,在高次插值中,插值区间的边界区域,插值函数没有很大的偏离原函数,从后面运行的结果可以看出没有在出现龙格现象。在本次插值中,使用切比雪夫零点替换了原先的等距节点,避免了龙格现象的出现。