蒙特卡洛方法的使用:计算pi值与积分计算
参考: https://blog.csdn.net/Cuixinyang19_/article/details/79888981
# -*- coding: utf-8 -*-
"""
Created on Tue Jan 22 07:38:15 2019
@author: ylz
用此种方法对pi值进行估计,就是蒙特卡洛方法
https://blog.csdn.net/Cuixinyang19_/article/details/79888981
蒙特卡洛方法:
1,产生大量的数据样点
2,对数据样点进行依据条件进行分割,分类
3,用每个类别中样点数量的统计值,来计算某些参数.
"""
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
#用蒙特卡洛方法求取pi的近似值.
# 投点次数
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 #用此种方法对pi值进行估计,就是蒙特卡洛方法
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()
#用蒙特卡洛方法求取f(x)与x轴围城图形的面积
def f(x):
return x**3
n = 30000
#矩形边界区域
x_min, x_max = 0.0, 1.0
y_min, y_max = 0.0, 1.0
#在矩形区域内随机投点x
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)) #求该f(x)图形下的面积.
#计算定积分的近似值
integral = res / n
print('integeral: ', 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()
蒙特卡洛方法的使用:计算pi值与积分计算相关推荐
- linux多线程计算pi,使用蒙特卡洛方法多线程计算pi值
我正在尝试使用montecarlo方法和使用并行C代码来查找PI的值.我已经写了serail代码并且工作正常.但是,并行代码给我一些时间0或PI错误的值负值使用蒙特卡洛方法多线程计算pi值 我的代码 ...
- python学习之 利用蒙特卡洛方法计算PI值
使用环境为python IDLE3.5. #利用蒙特卡洛方法计算PI值 from random import random from math import sqrt from time import ...
- 从蒙特卡洛方法计算pi值谈random模块
计算机模拟常常需要用到随机选择的数.本文从随机数的一个简单应用开始简要地介绍Python的random模块. 使用蒙特卡洛方法计算pi值 Links:该问题来自于pudure university(普 ...
- 用hadoop计算PI值
一.计算PI值的方式与原理 百度一下,计算PI的方法还真不少.但在hadoop examples代码中的注释写的是:是采用 Quasi-Monte Carlo 算法来估算PI的值. 维基百科中对Qua ...
- 搭建MPI并行计算环境并计算pi值[windows 和 Ubuntu]
文章目录 一. 选在Linux,Ubuntu或者Windows上搭建mpi环境 First of all What's more 二.VS配置mpi 三.计算pi值 (1)基础编译环境的构建 (2)M ...
- matlab 蒙特卡罗计算pi值
蒙特卡罗法计算pi值是比较基础的入门应用之一,网上流传的大部分代码包括百度百科上的代码都是使用for循环完成迭代的,运算速度非常慢,这里我们提供一个向量化运算的方式,以加快运算速度.接触编程久了后,会 ...
- 如何用hadoop自带的包计算pi值
一.计算pi的值的原理 通过hadoop计算pi值确实是一件很酷的事情,我想你可能会有疑问,(Hadoop不是一个分布式计算的处理数据的吗?)当然,计算它能处理大量数据,我们可以通过这种方式来计算pi ...
- 基于CUDA的GPU计算PI值
访问[WRITE-BUG数字空间]_[内附完整源码和文档] 基于CUDA的GPU计算PI值.本项目使用CUDA编程模型并行计算PI值,研究GPU与CPU效率的比较,分析不同GPU线程分块对性能的影响. ...
- 【MPI高性能计算】蒙特卡洛方法计算pi值
蒙特卡洛方法 就是通过概率模拟来近似计算. 其实算法进度不是很高. 代码 在下面代码中的input文件中的内容是 10000000 运行效果:下面用四个核来做计算 PS D:\C++\VS\repo\ ...
最新文章
- 初学 Python(十三)——匿名函数
- Caffe源码解析5:Conv_Layer
- 面试系列八 es写入数据的工作原理
- 信息系统项目管理师-论文专题(二)整体管理论文写作
- java zookeeper 使用场景_java架构之路-(分布式zookeeper)zookeeper真实使用场景
- 【App性能】:TraceView分析法
- 机器学习之EM算法的原理推导及相关知识总结
- 从KPI到OKR,高阶产品人如何推动业务高速增长
- 【java学习之路】(javaWeb篇)001.HTML
- 学习记录 java泛型资料
- Ubuntu18.04关闭ibus-daemon自启动
- jsp中嵌入java代码实例,jsp中嵌入java代码
- 关于FTTx(Fiber To The X:光纤接入)
- python实现网页微信登录_django 微信网页授权登陆的实现
- Flask蓝本创建名称错误导致的werkzeug.routing.BuildError
- 企业邮箱手机怎么设置服务器,如何设置手机企业邮箱
- 天翼云对象存储Java对接(经典版 Ⅱ型)
- 【知识兔】Excel教程小技巧之常用快捷键汇总
- cad调了比例因子没反应_大神们都在用的9个CAD制图技巧,你会用几个?
- collection集合 厂家_一篇搞定Java集合类原理-WEB资讯专栏-DMOZ中文网站分类目录