欢迎来到天天文库
浏览记录
ID:1555788
大小:47.00 KB
页数:3页
时间:2017-11-12
《拉格朗日插值法c语言的实现[1]》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一.拉格朗日插值法C语言的实现1.实验目的:进一步熟悉拉格朗日插值法。掌握编程语言字符处理程序的设计和调试技术。2.实验要求:已知:某些点的坐标以及点数。输入:条件点数以及这些点的坐标。输出:根据给定的点求出其对应的拉格朗日插值多项式的值。3.程序流程:(1)输入已知点的个数;(2)分别输入已知点的X坐标;(3)分别输入已知点的Y坐标;(4)通过调用函数lagrange函数,来求某点所对应的函数值。拉格朗日插值多项式如下:其中开始程序流程图:↓输入已知点个数n输入已知点的X坐标以及输入已知点的Y坐标↓调用函数lagrange函数↓输出结果↓程序如下:#include2、m>#include#includefloatlagrange(float*x,float*y,floatxx,intn)/*拉格朗日插值算法*/{inti,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);returnyy;}intmain(){i3、nti;intn;floatx[20],y[20],xx,yy;printf("Inputn:");scanf("%d",&n);if(n>=20){printf("Error!Thevalueofnmustin(0,20).");getch();return1;}if(n<=0){printf("Error!Thevalueofnmustin(0,20).");getch();return1;}for(i=0;i<=n-1;i++){printf("x[%d]:",i);scanf("%f",&x[i]);}printf("");for(i=0;i<=n-1;i++){print4、f("y[%d]:",i);scanf("%f",&y[i]);}printf("");printf("Inputxx:");scanf("%f",&xx);yy=lagrange(x,y,xx,n);printf("x=%f,y=%f",xx,yy);getch();}举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。运行结果如下:
2、m>#include#includefloatlagrange(float*x,float*y,floatxx,intn)/*拉格朗日插值算法*/{inti,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);returnyy;}intmain(){i
3、nti;intn;floatx[20],y[20],xx,yy;printf("Inputn:");scanf("%d",&n);if(n>=20){printf("Error!Thevalueofnmustin(0,20).");getch();return1;}if(n<=0){printf("Error!Thevalueofnmustin(0,20).");getch();return1;}for(i=0;i<=n-1;i++){printf("x[%d]:",i);scanf("%f",&x[i]);}printf("");for(i=0;i<=n-1;i++){print
4、f("y[%d]:",i);scanf("%f",&y[i]);}printf("");printf("Inputxx:");scanf("%f",&xx);yy=lagrange(x,y,xx,n);printf("x=%f,y=%f",xx,yy);getch();}举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。运行结果如下:
此文档下载收益归作者所有