通俗易懂的Monte Carlo的积分方法(三)
通俗易懂的Monte Carlo的积分方法(三)
考虑曾经在参加MCM时的一个多重积分的计算难题
∫∫D(H−z(x,y))21+zx2+zy2dσ\int\int_{D}(H-z(x,y))^2\sqrt{1+z_x^2+z_y^2}d\sigma ∫∫D(H−z(x,y))21+zx2+zy2dσ
其中:x2a2+y2b2+z2c2=1\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1a2x2+b2y2+c2z2=1且z≥0z \geq 0z≥0。
采用Monte Carlo积分法(期望法)
用的是面向对象的模块化编程思想
Python代码:
import random import numpy as np import math import matplotlib.pyplot as plt def z_value(a,b,c,x,y):return c*math.sqrt(1-x**2/(a**2)-y**2/(b**2))def z_dotx(a,b,c,x,y):return -c**2/a**2*x/z_value(a,b,c,x,y)def z_doty(a,b,c,x,y):return -c**2/b**2*y/z_value(a,b,c,x,y)def function_Calcul(x,y,H,a,b,c):if((x**2/(a**2)+y**2/(b**2))<1):return ((H-z_value(a,b,c,x,y))**2)*math.sqrt(1+(z_dotx(a,b,c,x,y))**2+z_doty(a,b,c,x,y)**2)else:return 0def int_Calcul(a,b,c,H,numbers):sum = 0Prop = []Prop_final = []S = 2 * a * 2 * bfor i in range(1,numbers):x_value = -a+2*a*random.random()y_value = -b+2*b*random.random()sum += function_Calcul(x_value,y_value,c,a,b,c)Prop.append(sum/(i)*S)for i in range(1,numbers):Prop_final.append(sum/(numbers)*S)plt.xlabel("Numbers")plt.ylabel("IntergalValue")plt.plot(range(1,numbers),Prop,color = 'blue',label = 'Change_value' )plt.plot(range(1,numbers),Prop_final,color = 'red',label = 'Mean_value')plt.legend()plt.show()print("The final intergal value is:{:.2f}".format(Prop[numbers-2]))int_Calcul(0.5,1,2,2,10000)
计算结果:
当a=0.5,b=1,c=2,H=2a=0.5,b=1,c=2,H=2a=0.5,b=1,c=2,H=2时,其最终的结果大概在12.0512.0512.05左右。
通俗易懂的Monte Carlo的积分方法(三)相关推荐
- 通俗易懂的Monte Carlo积分方法(二)
通俗易懂的Monte Carlo积分方法(二) Monte Carlo积分的计算(期望法) Monte Carlo算法的期望法计算的数学基础: 辛钦大数定律: 如果Xi是独立的随机变量,且EXi是相应 ...
- 通俗易懂的Monte Carlo积分方法(一)
通俗易懂的Monte Carlo积分方法(一) Monte Carlo积分的投点法计算: Monte Carlo算法(投点法)的数学基础: 伯努利大数定律: 设fA为n重伯努利试验中事件A发生的次数, ...
- Monte carlo 求解积分
Monte carlo 求解积分 文章目录 Monte carlo 求解积分 @[toc] 1 单变量情形 2 多变量情形 1 单变量情形 假设待求解积分形式为 θ = ∫ 0 1 f ( x ) d ...
- 通俗易懂的Monte Carlo积分方法(四)
Monte Carlo 方法计算的理论基础 1.理论目标 2.收敛性的描述 3.误差的描述与控制 4.减少误差的技巧 5.代码的实现 1.理论目标 利用辛钦大数定律和中心极限定理对MentoCar ...
- Monte Carlo Integration 蒙特卡罗方法求积分 附简单例题+代码
摘要 蒙特卡罗积分是一种基于随机抽样的统计方法.打个比方,要想知道抛出硬币得到正面的概率,随机投1000次,得到500次左右,推测出概率应该为 1 2 \frac{1}{2} 21.差不多是这意思, ...
- 蒙特卡洛方法 (Monte Carlo Method)(5)
与上一节动态编程(DP)方法不同的是,蒙特卡洛(Monte Carlo, MC)方法不需要环境的全部信息,而只需要 "experience",这里的"experience ...
- 5 蒙特卡洛方法 (Monte Carlo Method)
[上一篇 4 动态编程(Dynamic Programming, DP)] [下一篇 6 Temporal-Difference (TD) Learning ] 与上一节动态编程(DP)方法不同的是, ...
- Monte Carlo Method
Reference: Jonathan Pengelly, Monte Carlo Methods, 2002 Basic Description MC为许多数学上难以解决的问题通过运行统计采样实验提 ...
- 15分钟入门蒙特卡洛 Monte Carlo
来自 | 知乎 作者 | 薛定豆 链接 | https://zhuanlan.zhihu.com/p/223042372 编辑 | 深度学习这件小事公众号 本文仅作学术交流,如有侵权,请联系后台删 ...
最新文章
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | Hook 点分析 )
- 见光死怎么办?如何提升用户对网站的好感,提升转化?
- 【AI呀,我去】科技圈顶流——元宇宙上线,快来揭开它的神秘面纱
- icoding复习5 树 感觉难度巨大....
- SAP License:SAP用户权限
- Lisp入门(好文)
- 【绝迹篇】RSA加密算法(私钥加签公钥验签)
- 介绍一下Win11单独设置耳机音量的方法
- 【机器学习】支持向量机原理与序列最小最优化算法SMO
- php打印直角三角形,中考几何丨通过构造直角三角形斜边上的中线结合中位线解决问题!...
- (已更新)成语小秀才小程序V2.0.14完整安装包+小程序前端
- CCKS2019总结
- linux最后一行awk,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- mysql 实现异地同步_MySQL 异地同步问题
- QQ邮箱的一些bug
- ToB和ToC的产品经理的区别
- 区块链技术在软件开发中的应用
- java se 计算机专业技能-Java专项练习(选择题)(三)
- 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表
- 二级域名 文件服务器,自建DNS服务器使用二级域名转发内网服务器