当前位置:文档之家› 龙格现象

龙格现象

二.主要方、步骤:
1.运用FORTRAN编制原函数,拉格朗日插值和线性插值程序;
2.将数据运用grapher将实验数据绘制成图.
三.程序代码:
!龙格现象/高次插值的病态性质
PROGRAM LONGERend
parameter(n=10)
real(8) y(0:20),x(0:20),x1(0:20),y1(0:20),Ih(0:20)
!计算f(x)
open(2,file='y.doc')
write(2,"('x',30x,'f(x)')")
do i=0,n
x(i)=-5.0+10*i/n
y(i)=1.0/(1+x(i)**2)
write(2,*) x(i), y(i)
end do
!计算Ln(x),拉格朗日插值程序
OPEN(2,file='y1.doc')
write(2,"('x1',30x,'Ln(x)')")
do i=0,n-1
x1(i)=(x(i)+x(i+1))/2
y1(i)=0.0
do j=0,n
!计算Wn+1(x),W'n+1(x)
w=1.0
wp=1.0
do k=0,n
w=w*(x1(i)-x(k))
if(k/=j) then
wp=wp*(x(j)-x(k))
end if
end do
y1(i)=y1(i)+y(j)*w/wp/(x1(i)-x(j))
end do
write(2,*) x1(i),y1(i)
end do
!分段线性插值程序
open(2,file='Ih.doc')
write(2,"('x1',30x,'Ih')")
do k=0,n-1
Ih(k)=(x1(k)-x(k+1))/(x(k)-x(k+1))*y(k)+(x1(k)-x(k))/(x(k+1)-x(k))*y( k+1)
write(2,*) x1(k),Ih(k)
end do
print*,'数据已写入指定文件'
end
四.数值结果:
x f(x)
-5.00000000000000 3.846153846153846E-002 -4.00000000000000 5.882352941176471E-002 -3.00000000000000 0.100000000000000 -2.00000000000000 0.200000000000000 -1.00000000000000 0.500000000000000
0.000000000000000E+000 1.00000000000000
1.00000000000000 0.500000000000000
2.00000000000000 0.200000000000000
3.00000000000000 0.100000000000000
4.00000000000000
5.882352941176471E-002
5.00000000000000 3.846153846153846E-002
x1 Ln(x)
-4.50000000000000 1.57872102169562 -3.50000000000000 -0.226196282498366 -2.50000000000000 0.253755465606773 -1.50000000000000 0.235346591310803 -0.500000000000000 0.843407429828903
0.500000000000000 0.843407429828903
1.50000000000000 0.235346591310803
2.50000000000000 0.253755465606773
3.50000000000000 -0.226196282498366
4.50000000000000 1.57872102169562
x1 Ih
-4.50000000000000 4.864253393665158E-002 -3.50000000000000 7.941176470588235E-002 -2.50000000000000 0.150000000000000 -1.50000000000000 0.350000000000000 -0.500000000000000 0.750000000000000
0.500000000000000 0.750000000000000
1.50000000000000 0.350000000000000
2.50000000000000 0.150000000000000
3.50000000000000 7.941176470588235E-002
4.50000000000000 4.864253393665158E-002
Grapher制图部分:
原函数图像:
f(x)
x 拉格朗日插值函数图像:
Ln(x)
x
分段线性插值函数图象:
Ih(x)
x原函数
五.数值结果分析:
○1.从拉格朗日插值函数图象与原函数图像的对比可看出:随着自变量|x︱的增大Ln(x)与f(x)总体上呈现出偏离越来越远的效果;
○2.从分段线性插值函数图象与原函数图像的对比可看出:二者较为近似,
拉格线性插值函数能较好的逼近原函数;
从以上两点可以看出,高次插值多项式Ln(x)近似的效果并不一定好,而通过分段线性插值多项式则能很好的避免高次插值的病态现象。

六.实验收获和体会:
收获:1.能熟练的运用FORTRAN编制原函数,拉格朗日插值和线性插值程序;
2.能够运用grapher将实验数据绘制成图。

体会:由于FORTRAN还处在学习阶段,导致编写程序花掉了较长时间;而且由于不会该程序的有格式输出,导致数据绘图阶段花费了更多的功夫。

相关主题