本文主要是介绍拉格朗日插值法 C语言实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
-
-
-
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- struct Data{
- double x;
- double y;
- struct Data *next;
- };
-
-
-
-
- double LagrangeInsert(struct Data *header,double x)
- {
- Data *pi,*pj,*p;
- pi=pj=header->next;
- double temp1,temp2;
- temp1=0;
- temp2=1;
- while(pi!=NULL)
- {
- while(pj!=NULL)
- {
- if(pi!=pj)
- temp2 *=(x-pj->x)/(pi->x-pj->x);
- pj = pj->next;
- }
- temp1 +=temp2*pi->y;
- temp2=1;
- pj = header->next;
- pi = pi->next;
- }
- return temp1;
- }
-
- void main()
- {
- Data *header = (Data *)malloc(sizeof(Data));
- char str[20];
- Data *p,*newData;
- char strx[20],stry[20];
- double x;
-
- p=header;
- p->x=0;
- p->y=0;
- p->next=NULL;
-
-
- printf("*******************************************\n");
- printf("使用说明:\n1.用户输入插值点,每一行输入一组:x y;\n2.输入换行表示输入结束。\n");
- printf("*******************************************\n");
- printf("x y\n");
-
-
- memset(str,0,sizeof(str));
- while(strlen(str)==0)
- gets(str);
-
- while(strlen(str)!=0)
- {
- newData = (Data *)malloc(sizeof(Data));
- sscanf(str,"%s%s",strx,stry);
- newData->x = strtod(strx,NULL);
- newData->y = strtod(stry,NULL);
- newData->next=NULL;
- p->next=newData;
- p = p->next;
- gets(str);
- }
- printf("请输入要计算的x值:");
- scanf("%lf",&x);
- printf("L(%f) = %f\n",x,LagrangeInsert(header,0.20));
- return ;
这篇关于拉格朗日插值法 C语言实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!