日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

拉格朗日插值程序C语言,拉格朗日插值法 C语言实现

發布時間:2024/3/24 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 拉格朗日插值程序C语言,拉格朗日插值法 C语言实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/*

*作者:KDF5000

*功能:利用拉格朗日插值法求解近似值

*時間:2013.4.15

*/

#include

#include

#include

//存放插值節點

struct Data{

double x;

double y;

struct Data *next;

};

/****************************************************

*LagrangeInsert()

*功能:拉格朗日插值法

*****************************************************/

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); //獲取輸入的前兩個字符串 第一個為x,第二個為y

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语言,拉格朗日插值法 C语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。