python蒙特卡洛方法圆周率_蒙特卡罗方法 python 实现
蒙特卡罗(Monte Carlo)方法的精髓:用统计结果去计算频率,从而得到真实值的近似值。
一、求圆周率的近似值,采用 投点法
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
# 投点次数
n = 10000
# 圆的信息
r = 1.0 # 半径
a, b = (0., 0.) # 圆心
# 正方形区域边界
x_min, x_max = a-r, a+r
y_min, y_max = b-r, b+r
# 在正方形区域内随机投点
x = np.random.uniform(x_min, x_max, n) # 均匀分布
y = np.random.uniform(y_min, y_max, n)
# 计算 点到圆心的距离
d = np.sqrt((x-a)**2 + (y-b)**2)
# 统计 落在圆内的点的数目
res = sum(np.where(d < r, 1, 0))
# 计算 pi 的近似值(Monte Carlo方法的精髓:用统计值去近似真实值)
pi = 4 * res / n
print('pi: ', pi)
# 画个图看看
fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(x, y,'ro',markersize = 1)
plt.axis('equal') # 防止图像变形
circle = Circle(xy=(a,b), radius=r, alpha=0.5)
axes.add_patch(circle)
plt.show()
效果图
二、求定积分(definite integral)的近似值,采用 投点法
import numpy as np
import matplotlib.pyplot as plt
'''蒙特卡罗方法求函数 y=x^2 在[0,1]内的定积分(值)'''
def f(x):
return x**2
# 投点次数
n = 10000
# 矩形区域边界
x_min, x_max = 0.0, 1.0
y_min, y_max = 0.0, 1.0
# 在矩形区域内随机投点
x = np.random.uniform(x_min, x_max, n) # 均匀分布
y = np.random.uniform(y_min, y_max, n)
# 统计 落在函数 y=x^2图像下方的点的数目
res = sum(np.where(y < f(x), 1, 0))
# 计算 定积分的近似值(Monte Carlo方法的精髓:用统计值去近似真实值)
integral = res / n
print('integral: ', integral)
# 画个图看看
fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(x, y,'ro',markersize = 1)
plt.axis('equal') # 防止图像变形
axes.plot(np.linspace(x_min, x_max, 10), f(np.linspace(x_min, x_max, 10)), 'b-') # 函数图像
#plt.xlim(x_min, x_max)
plt.show()
效果图
python蒙特卡洛方法圆周率_蒙特卡罗方法 python 实现相关推荐
- 二维蒙特卡洛模拟居里温度_蒙特卡罗方法计算居里温度(上)
声明:旨在自学一些物理概念和计算方法后整理的笔记和心得,本文基于Kotze先生的Introduction to Monte Carlo methods for an Ising Model of a ...
- matlab蒙特卡罗方法求体积_蒙特卡罗方法详细讲解与MATLAB实现.ppt
下面给出几个常用的α与的数值: ? 关于蒙特卡罗方法的误差需说明两点:第一,蒙特卡罗方法的误差为概率误差,这与其他数值计算方法是有区别的.第二,误差中的均方差σ是未知的,必须使用其估计值 来代替,在计 ...
- 蒙特卡洛python求解派_Python实现蒙特卡罗方法
一.蒙特卡罗方法简介 蒙特卡罗(Monte Carlo)方法:简单来说,蒙特卡洛的基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果,精髓就是: ...
- python三重积分_蒙特卡罗方法。三重积分。Python。“+”的操作数父级不受支持...
我尝试用蒙特卡罗方法近似三重积分∫∫∫∫xyzdV,其中S=[0,1]×[0,1]×0,1]. 我有这个代码:from numpy import * import time from scipy.in ...
- python 凯利公式_蒙特卡罗方法验证凯利公式
说明 本文受知乎陈小米启发而写.有兴趣的朋友可以移步这里. 本文的代码完全是本人所撸. 问题描述 假想一个游戏.赢的概率是60%,输的概率40%.入场费随意交.如果赢了获得2倍的入场费金额(1赔1), ...
- values在python中的意思_相当于Python的values()字典方法的Javascript
相当于Python的values()字典方法的Javascript 这个问题已经在这里有了答案: 如何获取Javascript对象的所有属性值(不知道键)? ...
- matlab 蒙特卡洛树搜索算法_蒙特卡罗方法入门、蒙特卡洛树简介(转载)
本文通过五个例子,介绍蒙特卡罗方法(Monte Carlo Method). 一.概述 蒙特卡罗方法是一种计算方法.原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值. 它非常强大和灵活,又 ...
- python怎么编辑文件_如何使用python中的方法对文件进行修改文件名
在使用python语言中的方法操作文件时,打开方法可以直接使用open,但是对文件重命名需要调用os模块中的方法,删除文件也是 工具/原料 python 编辑器 截图工具 台式机 方法/步骤 1 进入 ...
- python模块下载过程_常用的python模块及安装方法
bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUti ...
最新文章
- PHP APC(可选PHP缓存)
- python中import cv2遇到的错误及安装方法_独家利用OpenCV,Python和Ubidots来构建行人计数器程序(附代码amp;解析)...
- 65 Airflow组成部分的概念介绍
- SharedPreferences的使用
- Fail2ban初识
- java存储过程与sql语句_存储过程与SQL语句怎么选择
- oracle11g R2 出现新增的表在导出的时候报EXP-00011: xx does not exist
- Android内存管理机制
- python 模拟浏览器selenium_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...
- CCF 2013-12-1 出现次数最多的数
- mysql 创建十万测试表_用MYSQL的存储过程创建百万级测试数据表
- FISCO BCOS 数据结构与编码协议 交易结构 区块结构
- blackfriday markdown的自动换行 go lang 正则替换字符串时遇到的坑,转义解析其中的 $1 $name 等
- 处理tiff格式dem数据的方法——输出xyz坐标
- fgo服务器维护2018.123,FGO9月30日更新维护公告
- 经济学人The right call on Huawei (20190427)
- Golang将IP转为整型int存储
- office之word开启参考线对齐
- python 爬虫实践 (爬取链家成交房源信息和价格)
- ps中常用模糊的区别
热门文章
- 作为程序员最好掌握的英语词汇
- 呕心沥血整理,Nginx看这个就够了
- SCCM 2007 R2 setp by setp(四)-操作系统组件配置
- 前端实际开发中常见坑(vue项目中各种运行编译报错)
- Hdu 1247 Hat's Words(Trie树)
- 《自然语言处理(哈工大 关毅 64集视频)》学习笔记:第五章 n-gram语言模型
- BC807G-25 SOT-23 T/R 友顺UTC
- com.alibaba.fastjson.JSONObject 和 org.json.JSONObject 区别
- 电脑数据恢复软件哪个好用:数据恢复软件推荐Tenorshare 4DDiG中文版
- 爬取国家统计局2020年五级联动行政区划(精确)