蒙特卡罗(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 实现相关推荐

  1. 二维蒙特卡洛模拟居里温度_蒙特卡罗方法计算居里温度(上)

    声明:旨在自学一些物理概念和计算方法后整理的笔记和心得,本文基于Kotze先生的Introduction to Monte Carlo methods for an Ising Model of a ...

  2. matlab蒙特卡罗方法求体积_蒙特卡罗方法详细讲解与MATLAB实现.ppt

    下面给出几个常用的α与的数值: ? 关于蒙特卡罗方法的误差需说明两点:第一,蒙特卡罗方法的误差为概率误差,这与其他数值计算方法是有区别的.第二,误差中的均方差σ是未知的,必须使用其估计值 来代替,在计 ...

  3. 蒙特卡洛python求解派_Python实现蒙特卡罗方法

    一.蒙特卡罗方法简介 蒙特卡罗(Monte Carlo)方法:简单来说,蒙特卡洛的基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果,精髓就是: ...

  4. python三重积分_蒙特卡罗方法。三重积分。Python。“+”的操作数父级不受支持...

    我尝试用蒙特卡罗方法近似三重积分∫∫∫∫xyzdV,其中S=[0,1]×[0,1]×0,1]. 我有这个代码:from numpy import * import time from scipy.in ...

  5. python 凯利公式_蒙特卡罗方法验证凯利公式

    说明 本文受知乎陈小米启发而写.有兴趣的朋友可以移步这里. 本文的代码完全是本人所撸. 问题描述 假想一个游戏.赢的概率是60%,输的概率40%.入场费随意交.如果赢了获得2倍的入场费金额(1赔1), ...

  6. values在python中的意思_相当于Python的values()字典方法的Javascript

    相当于Python的values()字典方法的Javascript 这个问题已经在这里有了答案: 如何获取Javascript对象的所有属性值(不知道键)?                       ...

  7. matlab 蒙特卡洛树搜索算法_蒙特卡罗方法入门、蒙特卡洛树简介(转载)

    本文通过五个例子,介绍蒙特卡罗方法(Monte Carlo Method). 一.概述 蒙特卡罗方法是一种计算方法.原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值. 它非常强大和灵活,又 ...

  8. python怎么编辑文件_如何使用python中的方法对文件进行修改文件名

    在使用python语言中的方法操作文件时,打开方法可以直接使用open,但是对文件重命名需要调用os模块中的方法,删除文件也是 工具/原料 python 编辑器 截图工具 台式机 方法/步骤 1 进入 ...

  9. python模块下载过程_常用的python模块及安装方法

    bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUti ...

最新文章

  1. PHP APC(可选PHP缓存)
  2. python中import cv2遇到的错误及安装方法_独家利用OpenCV,Python和Ubidots来构建行人计数器程序(附代码amp;解析)...
  3. 65 Airflow组成部分的概念介绍
  4. SharedPreferences的使用
  5. Fail2ban初识
  6. java存储过程与sql语句_存储过程与SQL语句怎么选择
  7. oracle11g R2 出现新增的表在导出的时候报EXP-00011: xx does not exist
  8. Android内存管理机制
  9. python 模拟浏览器selenium_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...
  10. CCF 2013-12-1 出现次数最多的数
  11. mysql 创建十万测试表_用MYSQL的存储过程创建百万级测试数据表
  12. FISCO BCOS 数据结构与编码协议 交易结构 区块结构
  13. blackfriday markdown的自动换行 go lang 正则替换字符串时遇到的坑,转义解析其中的 $1 $name 等
  14. 处理tiff格式dem数据的方法——输出xyz坐标
  15. fgo服务器维护2018.123,FGO9月30日更新维护公告
  16. 经济学人The right call on Huawei (20190427)
  17. Golang将IP转为整型int存储
  18. office之word开启参考线对齐
  19. python 爬虫实践 (爬取链家成交房源信息和价格)
  20. ps中常用模糊的区别

热门文章

  1. 作为程序员最好掌握的英语词汇
  2. 呕心沥血整理,Nginx看这个就够了
  3. SCCM 2007 R2 setp by setp(四)-操作系统组件配置
  4. 前端实际开发中常见坑(vue项目中各种运行编译报错)
  5. Hdu 1247 Hat's Words(Trie树)
  6. 《自然语言处理(哈工大 关毅 64集视频)》学习笔记:第五章 n-gram语言模型
  7. BC807G-25 SOT-23 T/R 友顺UTC
  8. com.alibaba.fastjson.JSONObject 和 org.json.JSONObject 区别
  9. 电脑数据恢复软件哪个好用:数据恢复软件推荐Tenorshare 4DDiG中文版
  10. 爬取国家统计局2020年五级联动行政区划(精确)