【发布时间】:2019-03-01 14:54:29
【问题描述】:
我了解蒙特卡罗模拟是通过绘制随机点并计算曲线外点和曲线内点之间的比率来估计面积。
假设曲线半径为一,我已经很好地计算了 pi 的值。
这里是代码
program pi
implicit none
integer :: count, n, i
real :: r, x, y
count = 0
n=500
CALL RANDOM_SEED
DO i = 1, n
CALL RANDOM_NUMBER(x)
CALL RANDOM_NUMBER(y)
IF (x*x + y*Y <1.0) count = count + 1
END DO
r = 4 * REAL(count)/n
print *, r
end program pi
但要找到整合,教科书说要应用相同的想法。但是如果我想找到
的集成,我迷失了如何编写代码f(x)=sqrt(1+x**2) over a = 1 and b = 5
在半径为 1 之前,我确实假设点在 x*2+y**2 条件下落入,但如何解决以上问题?
任何帮助都非常有帮助
【问题讨论】:
-
积分的一种解释是它是曲线、x 轴和积分极限(在您的情况下为 1 和 5)之间的区域。因此,您的任务变成了生成点并测试它们是否在该区域内,该区域有 3 个直边和一个弯曲边。如果您正在集成的函数在限制之间穿过 x 轴,则会变得更加困难,但我认为您的函数不会。画个草图,摸摸头,那么代码就比较简单了。
-
@HighPerformanceMark 感谢您的回复....我刚刚开始了解 fortran,因为它是作为您在主程序中的 Compulary 主题引入的。我很了解梯形、simson、newton rhapson 和二等分法,以及获得 pi 的蒙特卡洛部分......但是得到这个......我在过去的 3 个小时里都在挣扎......这超出了我的范围。 ..你能帮忙..我会通过程序结构进一步学习并开发我自己的......
-
我的评论和你的评论之间的时间表明你没有花很长时间遵循我评论最后一句中的建议。除此之外,不,我不愿意回答这个问题,评论是我现在能给你的所有帮助。我希望有人比我有更多的时间,也许性格更慷慨,很快就会出现并为你编写代码。请耐心等待,距您提出问题仅 15 分钟,而且 SO 上的 Fortran 观察者并不多。
-
这实际上与使用 Monte Carlo 计算 pi 非常相似。在区间上绘制函数图以查看更多信息。
-
@VladimirF 教科书也说同样的想法也适用于此。当它在 0 和 1 之间时我理解问题,我可以应用 (y
标签: fortran gfortran fortran90 fortran77