📄 新建 文本文档 (2).txt
字号:
题目
对【-5,5】作等距分划x[i]=-5+ih,h=10/n,i=0,1,2,……,n.并对Runge给出的函数y=1/(1+x*x)作Lagrange插值,取n=10,20计算插值多行式p(x)在x=4.8处的误差,并作分析
2. 算法描述:
Input:(xi,yi),i=0,1,2,3,…,n;x
Output:y
Algorithm
Step1.y=0;
Step.For i=0 to n Do
{L=1.0;
For j=0 to n Do
{if(j!=i)then L=L(x-xj)/(xi-xj);
y=y+yiL;
}
Step.Print(x,y)
源程序
#include"stdio.h"
#include"math.h"
#include"conio.h"
void main()
{
int n,i,j,m;
long double X,Y=0,Z;
printf("请输入n ");
scanf("%d",&n);
printf("请输入X " );
scanf("%lf",&X);
long double x[100];
long double y[100];
for(m=0;m<=n;m++){
x[m]=(m*10.0/n)-5.0;
y[m]=1/(1+x[m]*x[m]);
}
for(i=0;i<=n;i++){
long double l=1.0;
for(j=0;j<=n;j++){
if(j!=i) l=l*(X-x[j])/(x[i]-x[j]);
}
Y+=y[i]*l;
}
printf("%lf\n",Y);
Z=1/(1+X*X);
printf("误差为%lf\n",fabs(Z-Y));
getch();
}
注:我的开发与运行环境是在VC++6.0。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -