参考: 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值与积分计算相关推荐

  1. linux多线程计算pi,使用蒙特卡洛方法多线程计算pi值

    我正在尝试使用montecarlo方法和使用并行C代码来查找PI的值.我已经写了serail代码并且工作正常.但是,并行代码给我一些时间0或PI错误的值负值使用蒙特卡洛方法多线程计算pi值 我的代码 ...

  2. python学习之 利用蒙特卡洛方法计算PI值

    使用环境为python IDLE3.5. #利用蒙特卡洛方法计算PI值 from random import random from math import sqrt from time import ...

  3. 从蒙特卡洛方法计算pi值谈random模块

    计算机模拟常常需要用到随机选择的数.本文从随机数的一个简单应用开始简要地介绍Python的random模块. 使用蒙特卡洛方法计算pi值 Links:该问题来自于pudure university(普 ...

  4. 用hadoop计算PI值

    一.计算PI值的方式与原理 百度一下,计算PI的方法还真不少.但在hadoop examples代码中的注释写的是:是采用 Quasi-Monte Carlo 算法来估算PI的值. 维基百科中对Qua ...

  5. 搭建MPI并行计算环境并计算pi值[windows 和 Ubuntu]

    文章目录 一. 选在Linux,Ubuntu或者Windows上搭建mpi环境 First of all What's more 二.VS配置mpi 三.计算pi值 (1)基础编译环境的构建 (2)M ...

  6. matlab 蒙特卡罗计算pi值

    蒙特卡罗法计算pi值是比较基础的入门应用之一,网上流传的大部分代码包括百度百科上的代码都是使用for循环完成迭代的,运算速度非常慢,这里我们提供一个向量化运算的方式,以加快运算速度.接触编程久了后,会 ...

  7. 如何用hadoop自带的包计算pi值

    一.计算pi的值的原理 通过hadoop计算pi值确实是一件很酷的事情,我想你可能会有疑问,(Hadoop不是一个分布式计算的处理数据的吗?)当然,计算它能处理大量数据,我们可以通过这种方式来计算pi ...

  8. 基于CUDA的GPU计算PI值

    访问[WRITE-BUG数字空间]_[内附完整源码和文档] 基于CUDA的GPU计算PI值.本项目使用CUDA编程模型并行计算PI值,研究GPU与CPU效率的比较,分析不同GPU线程分块对性能的影响. ...

  9. 【MPI高性能计算】蒙特卡洛方法计算pi值

    蒙特卡洛方法 就是通过概率模拟来近似计算. 其实算法进度不是很高. 代码 在下面代码中的input文件中的内容是 10000000 运行效果:下面用四个核来做计算 PS D:\C++\VS\repo\ ...

最新文章

  1. 初学 Python(十三)——匿名函数
  2. Caffe源码解析5:Conv_Layer
  3. 面试系列八 es写入数据的工作原理
  4. 信息系统项目管理师-论文专题(二)整体管理论文写作
  5. java zookeeper 使用场景_java架构之路-(分布式zookeeper)zookeeper真实使用场景
  6. 【App性能】:TraceView分析法
  7. 机器学习之EM算法的原理推导及相关知识总结
  8. 从KPI到OKR,高阶产品人如何推动业务高速增长
  9. 【java学习之路】(javaWeb篇)001.HTML
  10. 学习记录 java泛型资料
  11. Ubuntu18.04关闭ibus-daemon自启动
  12. jsp中嵌入java代码实例,jsp中嵌入java代码
  13. 关于FTTx(Fiber To The X:光纤接入)
  14. python实现网页微信登录_django 微信网页授权登陆的实现
  15. Flask蓝本创建名称错误导致的werkzeug.routing.BuildError
  16. 企业邮箱手机怎么设置服务器,如何设置手机企业邮箱
  17. 天翼云对象存储Java对接(经典版 Ⅱ型)
  18. 【知识兔】Excel教程小技巧之常用快捷键汇总
  19. cad调了比例因子没反应_大神们都在用的9个CAD制图技巧,你会用几个?
  20. collection集合 厂家_一篇搞定Java集合类原理-WEB资讯专栏-DMOZ中文网站分类目录

热门文章

  1. matlab为long term visual tracking数据集生成groundtruth.txt
  2. alert弹出[object Object]解决方法
  3. layui框架学习(4:导航)
  4. L2正则化—tensorflow实现
  5. ESP8266-NodeMCU网络服务器——通过网页将文件上传到闪存文件系统
  6. P问题,NP问题,NP难问题
  7. 8.4 内存映射文件
  8. mysql复合索引(联合索引)的使用场景
  9. zeppelin入门使用
  10. BP神经网络能做什么?