一、实验目的
(1)通过上机实习,进一步加深对拉格朗日插值、牛顿插值和三次样条函数插值的数学模型及基本算法的理解。
(2)掌握编程语言在绘图方面的应用。
(3)观察、比较三种插值函数各自的不同特点。
二、实验内容
利用拉格朗日插值、牛顿插值、三次样条函数插值算法,结合VC++、VB、Delphi、Matlab、JAVA、Turbo C等任一种语言及绘图功能编程实现数值方法的求解。即在屏幕上用随机函数按适当的比例随机获取若干个点,然后用插值函数对上述离散点进行插值;并用可视化的用户界面及交互方式直观地显示三种插值函数的求解,使其计算结果更加直观和形象化。
三、算法设计与编码
3.1 整体流程
1. 生成已知数据点的x坐标 x0 和 y坐标 y0
2. 生成要预测插值点的x坐标 x
3. 调用拉格朗日插值函数 lagrange(x0, y0, x),得到预测值 y_lagrange
4. 调用牛顿插值函数 Newton(x0, y0, x),得到预测值 y_newton
5. 调用三次样条插值函数 spline(x0, y0, x, 1, [sin(0), sin(2*pi)]),得到预测值 y_spline 和多项式系数 p
6. 绘制已知数据点、拉格朗日插值结果、牛顿插值结果和三次样条插值结果的图像。
3.2 拉格朗日插值
。。。。。
3.3 牛顿插值
。。。
3.4 三次样条插值
。。。。
四、运行结果及分析
调用上述的三个插值函数,成功在图形界面窗口上绘制出来它们的插值结果如下图:
图 1插值法
五、小结
通过本次实验,对这三种插值法的数学模型及基本算法原理和优缺特点有了更加深入的了解,并通过实践编码亲自实现,提高了编程能力。获益匪浅。
分析:。。。。。。