随机的取出足够数量的区间上的点,计算出被积函数f(x)的值,然后做一下平均就可以了。比如说计算π的值,可以由以下积分计算出来:
下面由我给出fortran算法。
program mymainprogram
implicit none
real8::t1,t2,a1=00,b1=10
integer4::n=100000000
call cpu_time(t1)
write(,)'result pi=',mentekarol(a1,b1,100000000)
call cpu_time(t2)
write(,)'time',t2-t1
contains
function mentekarol(a,b,n)result(s)
real8,intent(in)::a,b
real8::s
real8::sum=0,randnum
integer4::i,n
do i=1,n
call random_seed()
call random_number(randnum)
randnum=a+(b-a)randnum
sum=sum+40/(10+randnumrandnum)
enddo
s=sum/n
end function mentekarol
end
计算结果如下:
可见还是比较准确的了。
以上就是关于fortran95中怎样用蒙特卡洛的方法求积分全部的内容,包括:fortran95中怎样用蒙特卡洛的方法求积分、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)