c語言牛頓插值,c語言牛頓插值法簡單編程

本文目錄一覽:

用C語言對X^3+10X-20=0求解

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

* 用牛頓插值法依據N個已知數據點即使函數值

* 輸入: n–已知數據點的個數N-1

* x–已知數據點第一坐標的N維列向量

* y–已知數據點第二坐標的N維列向量

* xx-插值點第一坐標

* 輸出: 函數返回值所求插值點的第二坐標

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

double newton(int n,double x[N],double y[N],double xx)

{

double d[N],b;

int i,j;

for(i=0;i=n;i++)

d=y;

for(i=n-1;i=0;i–) /*求差商*/

for(j=i+1;j=n;j++)

{

if(fabs(x-x[j])EPS)

return 0;

d[j]=(d[j-1]-d[j])/(x-x[j]);

}

b=d[n];

for(i=n-1;i=0;i–)

b=d+(xx-x)*b;

return b;

}

c語言程序翻譯解釋,這是一段程序中關於牛頓插值的程序,請幫忙把每句解釋一下,printf不用解釋。

{

double x[20],fx[20],f[20][20],xx,Nx,t; //定義雙精度的3個一維數組、一個二維數組、3個變數

int i,j,k,n; //定義4個整型變數

printf(” 請輸入插值點的個數n:”);

scanf(“%d”,n); //點的個數存入n

printf(” 請輸入插值節點值和插值點函數值:\n”);

for(i=0;i=n-1;i++) //接收各個點的值

{

printf(“x%d f(%d)分別為:”,i,i);

scanf(“%lf%lf”,x[i],fx[i]); //循環接收各個點的x、y的值並存入

}

for(i=0;i=n-1;i++)

f[i][0]=fx[i]; //把f[20][20]看成一個表,表的第一列按順序存入因變數的各個值

for(j=1;j=n-1;j++)

for(i=j;i=n-1;i++)

f[i][j]=(f[i][j-1]-f[i-1][j-1])/(x[i]-x[i-j]); //公式,結合書上的圖和上面一句話。。

for(k=0;k20;k++)

{

printf(“x=”);

scanf(“%lf”,xx); //用戶輸入的要求解的自變數值

if(xx==9999)

break; //如果自變數值太大了 就跳出去

Nx=f[0][0];

for(i=1;i=n-1;i++)

{ t=1.0;

for(j=0;j=i-1;j++) t=t*(xx-x[j]); //又是公式,就是(x-x0)*(x-x1)*…(x-xn)

Nx=Nx+t*f[i][i]; //公式的盡頭

}

printf(“N(%f)=%f\n”,xx,Nx); //輸出用戶輸入的自變數對應的因變數的值()

}

}

break;

大概這樣

牛頓的插值法用C語言怎麼編寫怎麼編啊?

#include iostream.h

#include math.h

void main()

{

char L;

do

{

double M[100][100];

double x[100],y[100];

double X=1,xx=0,w=1,N=0,P,R=1;

int n;

cout”請輸入所求均差階數:”;

cinn;

for(int i=0;i=n;i++)

{

cout”請輸入x”i”的值:”endl;

cinx[i];

cout”請輸入y”i”的值:”endl;

ciny[i];

M[i][0]=x[i];

M[i][1]=y[i];

}

for( int j=2;j=n+1;j++)

{

for( i=1;i=n;i++)

{

M[i][j]=(M[i][j-1]-M[i-1][j-1])/(M[i][0]-M[i-j+1][0]);

}

}

for(i=1;i=n;i++)

{

cout”其”i”階均差為:”M[i][i+1]endl;

}

cout”請輸入x的值:x=”;

cinxx;

for(i=0;in;i++)

{

X*=xx-x[i];

N+=M[i+1][i+2]*X;

P=M[0][1]+N;

}

cout”其函數值:y=”Pendl;

for(i=0;in;i++)

{

w*=xx-x[i];

R=fabs(M[n][n+1]*w);

}

cout”其截斷誤差:R=”Rendl;

coutendl”還想算其它插值嗎?是請按’y’否則按’n'”endl;

cinL;

}while(L==’y’);

}

用C語言實現拉格朗日插值、牛頓插值、等距結點插值演算法

#includestdio.h

#includestdlib.h

#includeiostream.h

typedef struct data

{

float x;

float y;

}Data;//變數x和函數值y的結構

Data d[20];//最多二十組數據

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”請輸入n值(即n次插值):”;//獲得插值次數

cinn;

if(n=count-1)// 插值次數不得大於count-1次

break;

else

system(“cls”);

}

//初始化t,y,yt。

float t=1.0;

float y=d[0].y;

float yt=0.0;

//計算y值

for(int j=1;j=n;j++)

{

t=(x-d[j-1].x)*t;

yt=f(0,j)*t;

//coutf(0,j)endl;

y=y+yt;

}

return y;

}

float lagrange(float x,int count)

{

float y=0.0;

for(int k=0;kcount;k++)//這兒默認為count-1次插值

{

float p=1.0;//初始化p

for(int j=0;jcount;j++)

{//計算p的值

if(k==j)continue;//判斷是否為同一個數

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”請輸入x[i],y[i]的組數,不得超過20組:”;//要求用戶輸入數據組數

cincount;

if(count=20)

break;//檢查輸入的是否合法

system(“cls”);

}

//獲得各組數據

for(int i=0;icount;i++)

{

cout”請輸入第”i+1″組x的值:”;

cind[i].x;

cout”請輸入第”i+1″組y的值:”;

cind[i].y;

system(“cls”);

}

cout”請輸入x的值:”;//獲得變數x的值

cinx;

while(1)

{

int choice=3;

cout”請您選擇使用哪種插值法計算:”endl;

cout” (0):退出”endl;

cout” (1):Lagrange”endl;

cout” (2):Newton”endl;

cout”輸入你的選擇:”;

cinchoice;//取得用戶的選擇項

if(choice==2)

{

cout”你選擇了牛頓插值計算方法,其結果為:”;

y=Newton(x,count);break;//調用相應的處理函數

}

if(choice==1)

{

cout”你選擇了拉格朗日插值計算方法,其結果為:”;

y=lagrange(x,count);break;//調用相應的處理函數

}

if(choice==0)

break;

system(“cls”);

cout”輸入錯誤!!!!”endl;

}

coutx” , “yendl;//輸出最終結果

}

C語言 怎麼輸出方程式

直接用printf輸出好了 只要看到不就得了

對應的數據在裡面填上

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/308276.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-03 14:48
下一篇 2025-01-03 14:48

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論