26 lines
547 B
Fortran
26 lines
547 B
Fortran
SUBROUTINE midpnt(func,a,b,s,n)
|
|
INTEGER n
|
|
REAL a,b,s,func
|
|
EXTERNAL func
|
|
INTEGER it,j
|
|
REAL ddel,del,sum,tnm,x
|
|
if (n.eq.1) then
|
|
s=(b-a)*func(0.5*(a+b))
|
|
else
|
|
it=3**(n-2)
|
|
tnm=it
|
|
del=(b-a)/(3.*tnm)
|
|
ddel=del+del
|
|
x=a+0.5*del
|
|
sum=0.
|
|
do 11 j=1,it
|
|
sum=sum+func(x)
|
|
x=x+ddel
|
|
sum=sum+func(x)
|
|
x=x+del
|
|
11 continue
|
|
s=(s+(b-a)*sum/tnm)/3.
|
|
endif
|
|
return
|
|
END
|