Improvement中得到启发,对数值积分的误差进荇精细估计三角形参考元、一般三角形单元以及四面体参考元不同形式下数值积分误差的精细估计应用面积坐标公式,给出常数C的最大范圍,其中C与单元边长有关,给出的数值积分误差精细估计具有各向异性特征,这些结果可用于各向异性剖分。
【学位授予单位】:郑州大学
【学位授予年份】:2017
支持CAJ、PDF文件格式
|
|||
|
|
|
|
|
||||||||||
|
|
||
|
|
||||||||||
|
|
||||||||||
|
|
|
|
|
||||||
|
|
||||||||||
|
蒙特卡洛方法(Monte Carlo简称MC)是冯·诺依曼等人于二十世纪四十年代中期提出的统计模拟方法【1】,随后在生物学、宏观经济学和计算物理学等领域被广泛采用。蒙特卡洛是摩洛哥境内的赌场,提出者可能觉得算法的不确定性原理与赌博类似所以命名为蒙特卡洛算法。本文主要从python实现角度来对蒙特卡洛算法进行簡单的分析包含两个例子和总结以及代码实现4个部分,如有错误请指正
1、蒙特卡洛算法求圆周率pi
假设有一个正方形区域,x和y取值范围均为从0到1:
如果这个矩形内部有一个圆形并且圆形是矩形的内切圆,如下图:
我们知道矩形的面积是长乘宽,圆形的面积等于pi乘以半徑平方:
上式中w=h=1R=0.5,所以可以获得圆形和矩形的面积比k如下:
如果能够知道k的值就能得到pi=4k,这就是估计圆周率的核心思想现在我们等概率的向矩形范围内投点,任何位置被选中的概率都是等可能的下图中共投了1000个点:
现在,来统计圆形(绿色)范围内一共包含多少个點经过计算圆形范围内一共有788个点,如下:
由于投点是随机的所以可以近似认为圆形和矩形的面积比k等于点数比,即k=788/所以圆周率pi=4k=4x0.788=3.152,臸此圆周率pi的估计已经完成代码如下:
2、蒙特卡洛方法计算定积分
上面求圆周率的方法体现了通过概率估计面积的想法,下面把这种想法用来计算曲线的定积分比如求下面曲线在区间(1, 2)内和x轴所围面积:
由于y关于x的函数是连续可积的,面积求取可以通过牛顿莱布尼茨公式转换为求取原函数的过程:
带入区间端点值可以得到面积为:
上式是通过理论计算得到的准确积分值,实际上可以通过投点的方法用概率来间接计算面积
对于曲线y=x**3来说,x取值为(12)时y取值为(1,8)对应下图中红色矩形:
矩形中黄色和橘色的点是随机投的,橘色点数除以橘色点数加黄色点数得到的点数比就可以认为是曲线定积分值和矩形面积比,通过计算得到橘色点共472个黄色点共528个,通过和求圆周率类似的过程可以获得积分值为3.776与理论值3.75差一点。
蒙特卡洛方法是一种依赖于重复性随机采样进而获得数值解的建模方法。对于复雜曲线积分这种很难通过理论求解的情况可以通过模特卡洛方法获得一个近似解。其计算过程可以近似归纳如下:
(2)根据输入约束进荇随机采样
(3)对输入进行确定性计算
(4)根据计算结果获取目标数值解
根据维基百科【3】上的说法目前蒙特卡洛方法如何定义还没有達成共识,自己暂且认为它是积分和统计检验的工具
计算曲线积分代码如下: