拉格朗日插值法C语言的实现(共3页).doc
精选优质文档-倾情为你奉上实验 一 .拉格朗日插值法C语言的实现1.实验目的:进一步熟悉拉格朗日插值法。掌握编程语言字符处理程序的设计和调试技术。2.实验要求:已知:某些点的坐标以及点数。输入:条件点数以及这些点的坐标 。输出:根据给定的点求出其对应的拉格朗日插值多项式的值 。3.程序流程:(1)输入已知点的个数;(2)分别输入已知点的X坐标;(3)分别输入已知点的Y坐标;(4)通过调用函数lagrange函数,来求某点所对应的函数值。拉格朗日插值多项式如下:其中开始程序流程图: 输入已知点个数n 输入已知点的X坐标以及输入已知点的Y坐标 调用函数lagrange函数输出结果 程序如下:#include <iostream> #include <conio.h> #include <malloc.h> 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+) ai=yi; for(j=0;j<=n-1;j+) if(j!=i) ai*=(xx-xj)/(xi-xj); yy+=ai; free(a); return yy; int main() int i; int n; float x20,y20,xx,yy; printf("Input n:"); scanf("%d",&n); if(n>=20) printf("Error!The value of n must in (0,20)."); getch();return 1; if(n<=0) printf("Error! The value of n must in (0,20)."); getch(); return 1; for(i=0;i<=n-1;i+) printf("x%d:",i); scanf("%f",&xi); printf("n"); for(i=0;i<=n-1;i+) printf("y%d:",i);scanf("%f",&yi); printf("n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%fn",xx,yy); getch(); 举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。运行结果如下:专心-专注-专业