插值法是一个古老而实用的方法,它是一种逼近函数的构造方法。我们在学习数值分析的过程中会学到很多插值方法,如拉格朗日插值法、牛顿插值法等,但比较遗憾的是并不是插值次数越高越好。在高次插值中会出现龙格现象,即:次数越高,在插值区间的边界区域会出现插值函数与原函数误差迅速增大的现象。 本次经验就讲一下在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、运行结果:没出现龙格现象运行后的图像,在高次插值中,插值区间的边界区域,插值函数没有很大的偏离原函数,从后面运行的结果可以看出没有在出现龙格现象。在本次插值中,使用切比雪夫零点替换了原先的等距节点,避免了龙格现象的出现。