蒙特卡洛方法靠谱程度不高却受追捧
来源:互联网 发布:我知谁掌管明天 歌词 编辑:程序博客网 时间:2024/05/29 11:06
……不是没有道理的。——常规的高效的迭代方法不行的全局优化,本质上是一拨又一拨的蒙特卡洛。
这个例子可以让常规的数值积分方法统统歇菜。比如, 如果用matlab中的integral3,肯定不行。需要非常特殊的技巧。Mathematica默认的方法一向通用性强,碰上这个问题也十分吃紧。
下面这两个结果,蒙特卡洛方法的结果更接近准确值。
精度要求低或者精度无法保证高而计算量大的情况下,蒙特卡洛可以试试。随机全局优化大致如此。
求不规则形状体积:
隐函数曲面方程
这个例子的较为精确的数值结果是:67.59353836486223222964871:
Matlab integral3歇菜
这个函数也是比较新的版本才有的。但是功能就比较老旧了。
无法得到有用结果,返回NaN和警告信息。
Mathematica NIntegrate
用Mathematica有几种不同实施方法,传统的方法差太远。
比如:
NIntegrate[Boole[Cos[x]+Cos[y]+Cos[z]+0.51` (Cos[x] Cos[y]+Cos[y] Cos[z]+Cos[z] Cos[x])+1<=0],{x,0,2Pi},{y,0,2Pi},{z,0,2Pi}]
得到:
66.70206691379813`
差距比较明显;
NIntegrate[1,{x,y,z}\[Element]ImplicitRegion[1+Cos[x]+Cos[y]+Cos[z]+51/100 (Cos[x] Cos[y]+Cos[x] Cos[z]+Cos[y] Cos[z])<=0&& 0<=x<=2Pi &&0<=y<=2 Pi &&0<=z<=2Pi,{x,y,z}]]
最新版本
67.0421386455621
这是稍好的近似值。
Monte Carlo方法,效率低,精度更差而且不太可控
ClearAll["Global`*"]; n = 125000; SeedRandom[0];f[x_] := (Cos /@ x // Total) + 51/100*Dot[Cos /@ RotateRight@x, Cos /@ x] + 1Count[Flatten@(f /@ RandomReal[{0, 2 Pi}, {n, 3}]), u_ /; u <= 0]/ n*(2.0 Pi)^3
结果
67.34464074875744`
阅读全文
0 0
- 蒙特卡洛方法靠谱程度不高却受追捧
- 评判云服务靠谱程度 -- Coding 安全那些事
- 卫哲的3+1思考法:测量项目“靠谱程度”
- 卫哲的3+1思考法:测量项目“靠谱程度”
- 卫哲的3+1思考法:测量项目的“靠谱程度”
- 卫哲的3+1思考法:测量项目“靠谱程度”
- 卫哲的3+1思考法:测量项目“靠谱程度”
- 卫哲的3+1思考法:测量项目“靠谱程度”
- 我的靠谱PM筛选方法
- 靠谱的禁止ViewPager滑动方法
- 提升编程水平的靠谱方法
- 批量修改表前缀靠谱的方法
- 个人投资理财哪些方法比较靠谱
- 比较靠谱的修改MySQL编码的方法
- mysql 插入百万级数据 简单靠谱的方法
- VMWare Linux虚拟机设置固定IP上网方法(靠谱)
- ASP.NET分页方法的了解程度
- 改变靠意愿而不是方法
- 机器学习:梯度下降法的三种形式BGD、SGD以及MBGD
- 关于thinkphp3.2控制器的请求独立性
- Runtime类--Java基础062
- 【android】View的事件体系3-弹性滑动
- Android Studio2.2.2下安装配置Kotlin教程
- 蒙特卡洛方法靠谱程度不高却受追捧
- Jacobian矩阵和Hessian矩阵
- 一周入门Kotlin(一)
- Android学习随笔
- HDU 4734 F(x)
- 策略模式
- WebRTC源码分析二:音频模块结构
- SMTP邮件postfix
- 从变量不可变到编程范式