caoer 发表于 2010-5-27 01:06:56

Monte Carlo 方法计算积分[有代码]

本帖最后由 caoer 于 2010-5-26 12:14 编辑

受【原创】一般区域n重积分MATLAB计算方法[有代码] 帖子影响,一位朋友说要贴出Monte Carlo计算积分的源程序,我就随便做一个简单的吧,复杂的程序完全可以从这个来演化,我想Monte Carlo积分的最大优势就在于高维积分,以及不规则区域, 可以节约很多计算机时。

附件只是一个2重积分,可以扩展到20维的只要添加相应的loop项。
被积函数: exp(sqrt(x(i)^2+y(i)^2));
x 上下限:x^2 < sin(y)
y 上下限: y^2<cos(x)

结果 :
I =    2.0308

rocwoods 发表于 2010-5-27 09:49:51

本帖最后由 rocwoods 于 2010-5-27 09:51 编辑

蒙特卡洛法用于求积分时,与积分重数无关,这点非常重要。虽然四维以下的积分用蒙特卡洛法效率可能不如传统的一些数值积分方法,但是维数高的时候,蒙特卡洛法比传统方法要有效的多,而且实现起来也非常容易。可以说,计算高维积分是蒙特卡洛方法最成功和典型的应用。
我现在也把书里的蒙特卡洛法求积分的那部分共享出来,基本的蒙特卡洛法就不共享了,基本的蒙特卡洛法具有计算不可重复性的缺点。这里共享采用等序列分布的蒙特卡洛法,具有计算可重复性,误差阶比采用基本蒙特卡洛法好的优点。由于有一些公式,在论坛上贴出来麻烦,我直接把word文档共享。

caoer 发表于 2010-5-27 09:53:29

本帖最后由 caoer 于 2010-5-26 20:56 编辑

rocwoods研究的很透彻啊,学习了。
谢谢分享

doublefrank 发表于 2010-5-27 10:58:39

总计算次数多少可以确保精度?“基本的蒙特卡洛法具有计算不可重复性”,总次数2000次的时候,误差有1~2%(计算一个动力学可靠度时的感觉)。这个误差是不得了的,呵呵~~有时候计算是97%多,有时候是98%,99%,我只有把这些的计算结果放到一起做数据处理,才得到98%多一些。

messenger 发表于 2010-5-27 22:05:23

很好,一直想研究Monte Carlo方法,可惜一直没时间。

rocwoods 发表于 2010-5-27 22:25:22

总计算次数多少可以确保精度?“基本的蒙特卡洛法具有计算不可重复性”,总次数2000次的时候,误差有1~2%(计算一个动力学可靠度时的感觉)。这个误差是不得了的,呵呵~~有时候计算是97%多,有时候是98%,99%,我只有 ...
doublefrank 发表于 2010-5-27 10:58 http://forum.simwe.com/images/common/back.gif
就基本的蒙特卡洛法求积分来说,不管积分重数多少,基本上是计算规模增加100倍,精度提高10倍。

doublefrank 发表于 2010-5-31 00:03:04

本帖最后由 doublefrank 于 2010-5-31 00:10 编辑


就基本的蒙特卡洛法求积分来说,不管积分重数多少,基本上是计算规模增加100倍,精度提高10倍。
rocwoods 发表于 2010-5-27 22:25 http://forum.simwe.com/images/common/back.gif
嗯,是的,收敛速度是样本数的开方,sqrt(10)=10,增加到100倍,确实精度是提高一个小数位。
我正想把你这个等分布序列的思想引入到isight抽样中去。
目前用的是descriptive sampling,这个算法还没掌握。
不清楚是否可以翻译成描述性抽样,这个翻译出来的关键词我摆渡不到:(

另外,还要请教rocwoods前辈,蒙特卡洛抽样分多少种呢?
一直没搞清楚分类的方法,零零散散接触到的是ansys有三种(直接法,拉丁超立方法,自定义法),重点抽样,gibbs抽样,广义条件抽样等。主要一直没找到一本合适的书来看,期望能推荐一下。

rocwoods 发表于 2010-5-31 22:59:43

7# doublefrank
可以参考下 李庆扬,关治,白峰杉.数值计算原理,.北京:清华大学出版社,2000年出版。里面有对蒙特卡洛求积分法的一些讨论。

zhudapeng 发表于 2010-6-3 19:47:30

十分感谢~~

小星星 发表于 2017-7-20 10:13:31

谢谢分享!!!!!

lxbbxl 发表于 2017-9-4 15:57:44

很好的 材料啊

ACHUN 发表于 2021-4-21 10:24:23

十分感谢。

yuskiy 发表于 2022-4-6 10:08:41

好材料,谢谢分享
页: [1]
查看完整版本: Monte Carlo 方法计算积分[有代码]