国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

牛頓和拉格朗日插值算法

2019-11-17 04:59:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
/*近日瀏覽文章時(shí)發(fā)現(xiàn)在這個(gè)網(wǎng)站上有好幾篇問(wèn)關(guān)于牛頓插值和拉格朗日插值的文章。本人正好寫了這個(gè)代碼,將它公布,希望對(duì)一些朋友有幫助。如程序中有什么問(wèn)題請(qǐng)與我聯(lián)系。QQ:421404493 E-mail:wbaobao#zj.com*///編譯平臺(tái):2000+vc6.0//實(shí)驗(yàn)一
//作者:計(jì)算機(jī)科學(xué)與技術(shù)02級(jí)2班 寶寶 421404493
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
typedef strUCt data
{
 float x;
 float y;
}Data;//變量x和函數(shù)值y的結(jié)構(gòu)
Data d[20];//最多二十組數(shù)據(jù)
float f(int s,int t)//牛頓插值法,用以返回插商
{
 if(t==s+1)
  return (d[t].y-d[s].y)/(d[t].x-d[s].x);
 else
        return (f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x);  
}
float Newton(float x,int count)
{
 int n;
 while(1)
 {
     cout<<"請(qǐng)輸入n值(即n次插值):";//獲得插值次數(shù)
  cin>>n;
  if(n<=count-1)// 插值次數(shù)不得大于count-1次
   break;
  else
   system("cls");
 }
//初始化t,y,yt。
 float t=1.0;
 float y=d[0].y;
 float yt=0.0;
//計(jì)算y值
 for(int j=1;j<=n;j++)
 {
  t=(x-d[j-1].x)*t;
  yt=f(0,j)*t;
  //cout<<f(0,j)<<endl;
  y=y+yt;
 }
 return y;
}
float lagrange(float x,int count)
{
 float y=0.0;
 for(int k=0;k<count;k++)//這兒默認(rèn)為count-1次插值
 {
  float p=1.0;//初始化p
  for(int j=0;j<count;j++)
  {//計(jì)算p的值
   if(k==j)continue;//判定是否為同一個(gè)數(shù)
   p=p*(x-d[j].x)/(d[k].x-d[j].x);
  }
  y=y+p*d[k].y;//求和
 }
 return y;//返回y的值
}
void main()
{
 float x,y;
 int count;
 while(1)
 {
  cout<<"請(qǐng)輸入x[i],y[i]的組數(shù),不得超過(guò)20組:";//要求用戶輸入數(shù)據(jù)組數(shù)
  cin>>count;
  if(count<=20)
   break;//檢查輸入的是否合法
  system("cls");
 }
//獲得各組數(shù)據(jù)
 for(int i=0;i<count;i++)
 {
      cout<<"請(qǐng)輸入第"<<i+1<<"組x的值:";
      cin>>d[i].x;
      cout<<"請(qǐng)輸入第"<<i+1<<"組y的值:";
      cin>>d[i].y;
   system("cls");
 }
 cout<<"請(qǐng)輸入x的值:";//獲得變量x的值
 cin>>x;
 while(1)
 {
  int choice=3;
  cout<<"請(qǐng)您選擇使用哪種插值法計(jì)算:"<<endl;
  cout<<"              (0):退出"<<endl;

  cout<<"              (1):Lagrange"<<endl;
  cout<<"              (2):Newton"<<endl;
  cout<<"輸入你的選擇:";
  cin>>choice;//取得用戶的選擇項(xiàng)
  if(choice==2)
  {
   cout<<"你選擇了牛頓插值計(jì)算方法,其結(jié)果為:";
   y=Newton(x,count);break;//調(diào)用相應(yīng)的處理函數(shù)
  }
        if(choice==1)
  {
   cout<<"你選擇了拉格朗日插值計(jì)算方法,其結(jié)果為:";
   y=lagrange(x,count);break;//調(diào)用相應(yīng)的處理函數(shù)
  }
  if(choice==0)
   break;
  system("cls");
  cout<<"輸入錯(cuò)誤!!!!"<<endl;
 }
 cout<<x<<"    ,        "<<y<<endl;//輸出最終結(jié)果
    
}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 志丹县| 阳谷县| 襄城县| 海门市| 波密县| 维西| 黎川县| 南陵县| 鸡东县| 香格里拉县| 泗水县| 松桃| 河东区| 隆尧县| 清水河县| 通化市| 灵丘县| 呼图壁县| 新昌县| 长宁区| 华阴市| 阳城县| 绵竹市| 宁波市| 葫芦岛市| 昌宁县| 禄劝| 葵青区| 界首市| 九江市| 乐陵市| 彭山县| 昭平县| 平舆县| 永新县| 南郑县| 巴彦县| 双峰县| 汝州市| 东乡县| 外汇|