课题一: 拉格朗日插值法
1.实验目的
1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。
2.实验过程
作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00) 二、算法步骤
已知:某些点的坐标以及点数。 输入:条件点数以及这些点的坐标 。
输出:根据给定的点求出其对应的拉格朗日插值多项式的值 。 3.程序流程:
(1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下:
#include
float lagrange(float *x,float *y,float xx,int n) /*拉格朗日
插值算法*/ {
int i,j;
float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项*/ a=(float*)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) {
a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i)
a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy; } int main() { int i; int n;
float x[20],y[20],xx,yy; printf(\
scanf(\if(n<=0) {
printf(\The value of n must in (0,20).\getch();return 1; }
for(i=0;i<=n-1;i++) {
printf(\ scanf(\ }
printf(\
for(i=0;i<=n-1;i++) {
printf(\ } printf(\
printf(\ scanf(\
yy=lagrange(x,y,xx,n); printf(\ getch(); }
举例如下: 已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。
运行结果如下: Input n:3 x[0]:1 x[1]:-1 x[2]:2 y[0]:0 y[1]:-3 y[2]:4 Input xx:1.5
x=1.500000,y=1.791667
3、实验总结
拉格朗日插值模型简单,结构紧凑,是经典的插值法。但是由于拉格朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重新计算。且当增大插值阶数时容易出现龙格现象。
在物理化学,资产价值鉴定工作和计算某一时刻的卫星坐标和钟差等这些方面可以应用Lagrange插值。采用拉格朗日插值法计算设备等功能重置成本,计算精度较高,方法快捷。但是这方法只能针对可比性较强的标准设备,方法本身也只考虑了单一功能参数,它的应用范 围因此受到了一定的 限 制。作为一种 探索,我们可以将此算法以及其它算法集成与计算机评估分析系统中,作为传统评估分析方法的辅助参考工具,以提高资产价值鉴定工作的科学性和准确性。