本文目錄一覽:
- 1、用C語言對X^3+10X-20=0求解
- 2、c語言程序翻譯解釋,這是一段程序中關於牛頓插值的程序,請幫忙把每句解釋一下,printf不用解釋。
- 3、牛頓的插值法用C語言怎麼編寫怎麼編啊?
- 4、用C語言實現拉格朗日插值、牛頓插值、等距結點插值算法
- 5、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-hant/n/308276.html