?? lagrange_input_data.cpp
字號:
#include<iostream.h>
#include<math.h>
double ww0 (double x[],double xk, int m)//定義w0多項式
{
double w0=1;
for(int i=0;i<=m;i++)
{ w0=w0*(xk-x[i]);}
return w0;
}
double ww1(double x[],int m ,int k)//定義w1多項式
{ double w1=1;
for(int i=0; i<=m; i++)
{if(i!=k)w1=w1*(x[k]-x[i]);}
return w1;
}
void main()
{int n,k;
double xx,xp,lnx;
cout<<"輸入總的節點數n:"<<endl;
cin>>n;
double x[50],y[50];
for(k=0;k<n;k++)
{ cout<<"輸入第"<<k<<"個結點x的值:";
cin>>xp;
x[k]=xp;
y[k]=sin(xp);
cout<<"對應y[]的值:"<<"y["<<k<<"]="<<y[k]<<endl;
}
cout<<"輸入所要求的xx的值:";
cin>>xx;
lnx=0;
for(k=0;k<=n;k++)//求拉格朗日插值多項式
{xp=ww0(x,xx,n)/((xx-x[k])*ww1(x,n,k));
lnx=lnx+y[k]*xp;
}
cout<<"ln(x)="<<lnx<<endl;
xp=sin(xx);
cout<<"輸出xx的真實值:"<<xp<<endl;
cout<<"截斷誤差:"<<xp-lnx<<endl;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -