RANDOM NUMBER GENERATOR
As a test ,generates pi from the unit radius circle.
By Reinaldo Baretti Machín
www.geocities.com/serienumerica2
www.geocities.com/serienumerica
[email protected]
c generates pi as 4.*area of the quadrant of unit radius circle
c area of sampling =1 ,0<=x<=1, 0<=y<=1 , one fouth circle pi/4.
f(x)=sqrt(1.-x**2)
pi=2.*asin(1.)
nstep=4000
bigsum=0.
do 20 ix=1,10
x=2.*sqrt(float(ix))
sum=0.
do 10 i=1,nstep
y=sqrt(pi*x)
z=(sqrt(pi*x)-int(y))
x1=z
x=z*(float(i))**(1./3.)*1.e2
sum=sum+f(x1)
10 continue
aint= sum/float(nstep)
print*,'ix,integral=',ix, aint
bigsum=bigsum+aint
20 continue
sumtrap=0.
dx=1./float(nstep)
do 30 i=1,nstep
x=0.+dx*float(i)
sumtrap=sumtrap+(dx/2.)*( f(x)+f(x-dx) )
30 continue
sumtrap=4.*sumtrap
print*,' '
print*,'bigsum/10. , pi/4.,int by trap=',4.*bigsum/10.,pi,sumtrap
stop
end
ix,integral= 1 0.780423939
ix,integral= 2 0.788681924
ix,integral= 3 0.778350234
ix,integral= 4 0.789347053
ix,integral= 5 0.788558424
ix,integral= 6 0.790819228
ix,integral= 7 0.78872937
ix,integral= 8 0.776452482
ix,integral= 9 0.784374595
ix,integral= 10 0.790816247
bigsum/10. , pi/4.,int by trap= 3.14262152 3.14159274 3.14158654