当前位置:文档之家› 西电计算方法第三次作业

西电计算方法第三次作业

第四章习题
1利用函数y 二..x 在X 1 =100,X 2 =121处的值,计算-..115的近似值,并估计误差。

1
n
x — X ・
解:LMx) = ' y 」k (x),l k (x) -
7 X k - X i
y °(x) =10, %(x) =11
估计误差:卜帀—^(115) = 10.724-10.714 =0.01
于是 N(x)=16x 7x(x-1) 一 2.5x(x-1)(x-2)
x(x-1)(x-2)(x-4)
6
Ljx)二 y °l °(x) %l 1(x) =10 x -121 100-121 11
x -100
121-100
.LM115) =10
115-121 100-121 11 115-100 121-100 75
7 10.714 一 115
N°(0.125 0.125t) =0.79618— 0.02284t— 0.003395t(t -1) —0.000527t(t — 1)(t - 2) 当0.125+0.125t=0.1581 时,t=0.2648 代入上式得f(0.1581)=0.790615
当0.125t+0.125=0.636 时,t=4.088 代入上式得f(0.636)=0.646062
上机作业
例1:已知函数表:
xi 0.56160 0.56280 0.56401 0.56521
yi 0.82741 0.82659 0.82577 0.82495
用三次拉格朗日插值多项式求x=0.5635时的函数近似值
C语言程序设计:
# in clude<stdio.h>
float Lagrange(float x[],float y[],float xx,int n)
{
int i,j;
float *a,yy=0;
a=new float[ n];
for(i=0;i<=n _1;i++)
{
a[i]=y[i];
for(j=0;j<=n _1;j++)
if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);
yy+=a[i];
}
delete a;
return yy;
}
void mai n()
{
float x[4]={0.56160,0.56280,0.56401,0.56521};
float y[4]={0.82741,0.82659,0.82577,0.82495};
float xx=0.5635,yy;
yy=Lagra nge(x,y,xx,4);
prin tf("x=%f,y=%f\n",xx,yy);
}
运行结果:
x=0.563500
y=0.826116
g *C:\DocuMents and Settings\Ad>inistrator\Debug\Cpp1.exe 1^0.563500/9=0.826116
Press any key to cont in Lie
例2:已知函数表
xi 0.4 0.55 0.65 0.8 0.9
yi 0.41075 0.57815 0.69675 0.88811 1.02652 用牛顿插值多项式求M(0.596)和2 (0.895 )。

C语言程序设计:
# in clude<stdio.h>
# define N 4
void Differen ce(float x[],float y[],i nt n)
{
float *f=new float[ n+1];
int k,i;
for(k=1;k<=n ;k++)
{
f[0]=y[k];
for(i=0;i<k;i++)
f[i+1]=(f[i]-y[i])/(x[k]-x[i]);
y[k]=f[k];
}
delete f;
return;
}
void mai n()
{
int i;
float b,varx=0.596;
float x[N+1]={0.4,0.55,0.65,0.8,0.9};
float y[N+1]={0.41075,0.57815,0.69675,0.88811,1.02652};
Differe nce(x,y,N);
b=y[N];
for(i=N-1;i>=0;i--)
b=b*(varx-x[i])+y[i];
prin tf("N n( %f)=%f',varx,b);
}
运行结果:
N n(0.596)=0.631918
N n(0.895)=1.019368。

相关主题