program numerov
implicit none
real f(10000000)
real y(10000000)
real reallyy(10000000)
real,parameter :: h = 0.01
real w0
real w1
real y0
real dy0
real yn
real fn
real w2
integer count
integer i,j,k,p
real time_begin
real time_end
write(*,*)'input y0'
read(*,*) y0
y(1) = y0
write(*,*)'input dy0'
read(*,*) dy0
y(2) = y(1) + h * dy0
call cpu_time(time_begin)
do j = 1,10000000
f(j) = 1
end do
w0 = y0 * (1 + h**2/12 * f(1))
w1 = y(2) * (1 + h**2/12 * f(2))
yn = y(2)
fn = f(1)
do i=2,10000000
w2 = 2 * w1 - w0 - h**2 * fn * yn
fn = f(i)
yn = w2 / (1 + h**2/12 * fn)
y(i) = yn
w0 = w1
w1 = w2
end do
call CPU_time(time_end)
!do k=1,100
!write(*,*) y(k)
!reallyy(k) = cos(h*k) + 2 * sin(h*k)
!write(*,*) abs(reallyy(k) - y(k))
!end do
write(*,*)time_end - time_begin
read(*,*)
end program
上代码,关于numerov算法的话
之后会补上的