Files
2016-02-03 18:52:05 +00:00

39 lines
994 B
Fortran

SUBROUTINE voltra(n,m,t0,h,t,f,g,ak)
INTEGER m,n,MMAX
REAL h,t0,f(m,n),t(n),g,ak
EXTERNAL ak,g
PARAMETER (MMAX=5)
CU USES ak,g,lubksb,ludcmp
INTEGER i,j,k,l,indx(MMAX)
REAL d,sum,a(MMAX,MMAX),b(MMAX)
t(1)=t0
do 11 k=1,m
f(k,1)=g(k,t(1))
11 continue
do 16 i=2,n
t(i)=t(i-1)+h
do 14 k=1,m
sum=g(k,t(i))
do 13 l=1,m
sum=sum+0.5*h*ak(k,l,t(i),t(1))*f(l,1)
do 12 j=2,i-1
sum=sum+h*ak(k,l,t(i),t(j))*f(l,j)
12 continue
if(k.eq.l)then
a(k,l)=1.
else
a(k,l)=0.
endif
a(k,l)=a(k,l)-0.5*h*ak(k,l,t(i),t(i))
13 continue
b(k)=sum
14 continue
call ludcmp(a,m,MMAX,indx,d)
call lubksb(a,m,MMAX,indx,b)
do 15 k=1,m
f(k,i)=b(k)
15 continue
16 continue
return
END