作业帮 > 综合 > 作业

编写牛顿均差插值多项式的程序用fortran语言

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/17 01:16:04
编写牛顿均差插值多项式的程序用fortran语言
去年学的Fortran语言,许多算法都忘了.给你一个去年写的牛顿插值程序,需要改动的地方自己改,貌似循环计算(多层计算)那块处理得不错.
real*8 x(0:5),y(0:5),c(0:5),u1,u2,ci
data y/0.796,0.773,0.744,0.704,0.656,0.602/
open(1,file='7-2.dat')
write(*,*)'input u1=?,u2=?'
read(*,*)u1,u2
do i=0,5
x(i)=(i+1)*0.125
enddo
c(0)=y(0)
do i=1,5
call chashang(x,5,i,ci)
c(i)=ci
write(*,*)'c(i)=,i=',c(i),i
write(1,*)'c(i)=,i=',c(i),i
enddo
call newchazhi(u1,c,x,5)
call newchazhi(u2,c,x,5)
end
subroutine newchazhi(u,c,x,m)
real*8 c(0:m),x(0:m),u,N
S=c(0)
do i=1,5
N=c(i)
do j=0,i-1
N=N*(u-x(j))
enddo
S=S+N
enddo
write(*,*)u,s
write(1,*)u,s
end
subroutine chashang(x,m,i,ci)
real*8 y(0:5),x(0:m),f(1:i),ci
y(0)=0.796
y(1)=0.773
y(2)=0.744
y(3)=0.704
y(4)=0.656
y(5)=0.602
k=0
10 do j=1,i-k
f(j)=(y(j)-y(j-1))/(x(j+k)-x(j-1))
enddo
if(j==1) then
goto 5
else
do j=1,i-k
y(j-1)=f(j)
enddo
k=k+1
goto 10
endif
5 ci=f(j)
return
end