⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lagrange_input_data.cpp

📁 掌握Lagrange插值算法,并应用算法于实际问题 观察Lagrange插值的龙格现象
💻 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 + -