编写牛顿均差插值多项式的程序用fortran语言
发布网友
发布时间:2022-04-22 16:51
我来回答
共3个回答
热心网友
时间:2023-10-07 10:06
去年学的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 newcha(u1,c,x,5)
call newcha(u2,c,x,5)
end
subroutine newcha(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
热心网友
时间:2023-10-07 10:06
哈哈哈,你是谁啊,去找郭老师啊,哈哈!
热心网友
时间:2023-10-07 10:07
可以参考一下 彭国伦写的《fortran95程序设计》,上面介绍了很多例子,你说的这个情况也是包括的。