首页 > 其他分享 >基于蒙特卡洛法的圆周率 pi 的近似解

基于蒙特卡洛法的圆周率 pi 的近似解

时间:2022-08-28 16:47:47浏览次数:59  
标签:__ plt ## 圆周率 random 正方形 蒙特卡洛 pi

方法简析

简单来说,当我们无法求某个问题的精确解时,可以进行随机抽样,根据统计试验求该问题的近似解。

\(\pi\) 的近似求解

已知:圆的面积 \(S(r)=\pi r^2\)(别问我为什么),于是

\[ \pi = S(1) \]

构造单位圆的外接正方形,如下图

先向正方形内随机撒点(均匀分布),当点的个数达到一定程度时,从统计分析的角度,一定有

\[ \frac{S_{圆}}{S_{正方形}} \approx \frac{圆内点的个数}{正方形内点的总数量} \]

因此

\[ \pi = S(1) \approx 4\times\frac{圆内点的个数}{正方形内点的总数量} \]

下面用Python实现

import random
import matplotlib.pyplot as plt

def IsInC(x,y):
    '''
        判断点(x,y)是否在圆内
    '''
    if (x-1)**2 + (y-1)**2 < 1:
        return True
    return False

if __name__ == "__main__":
    ## 参数定义
    cx = 1 # 圆心横坐标
    cy = 1 # 圆心纵坐标
    ## 随机模拟10000个点
    n = 10000
    ## 存放圆内的点数
    k = 0
    ## 随机模拟过程
    plt.figure()
    for i in range(n):
        # 随机生成点坐标
        x = random.uniform(0,2)
        y = random.uniform(0,2)
        # 若点在圆内,设置颜色为蓝色;在圆外则设为红色
        if IsInC(x,y):
            plt.plot(x,y,'b.')
            k += 1
        else:
            plt.plot(x,y,'r.')
    plt.gca().set_aspect(1) # 保证横纵坐标单位长度相同
    plt.xlabel("x")
    plt.ylabel("y")
    plt.show()
    Pi = (k/n)*4
    ## 打印pi的近似值
    print('pi的近似值为:',Pi)

输出:

pi的近似值为: 3.1592

标签:__,plt,##,圆周率,random,正方形,蒙特卡洛,pi
From: https://www.cnblogs.com/hznudmh/p/16633027.html

相关文章

  • web应用模式和api接口
    web应用模式:前后端不分离(客户端看到的内容和所有界面效果都是由服务端提供出来的)  2.前后端分离(把前端的界面效果(html,css,js分离到另一个服务端,python服务......
  • pip下载慢问题解决方案
    在使用Python开发过程中,经常要用pip安装软件包,但是直接使用pipinstallpackagename经常慢得要死,而且慢就算了很多时候还下载完成安装失败。问题原因pip默认使用的是国外......
  • .Net 7中新增的限速API
    .NET7 内置了速率限制(RateLimiting)功能,速率限制指的是限制可访问资源的请求数。例如数据库每分钟可以安全处理1000个请求,再多不确定会不会崩。这时就可以在应用程序......
  • archlinux下安装和配置cockpit简单记录
    使用如下命令安装,pacockpit端口查找,vim/usr/lib/systemd/system/cockpit.socketinstallmoretools,yaycockpit234567等。包括Podman管理容器,管理虚拟机,管理软件包更......
  • Spring中的SPI机制
    前言在面向对象编程领域中,六大原则之一的依赖倒置原则提到的原则规定:高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口;抽象接口不应该依赖于具体实现,而......
  • ArcGIS API forJavaScript4.x去除地图获取焦点的黑色边框
    ArcGISAPIforJavaScript4.x去除地图获取焦点的黑色边框CSS/*去掉地图聚焦边框*/.esri-view-surface--inset-outline:focus::after{outline:none!important......
  • [转] 超高效!Swagger-Yapi的秘密
     原文:https://juejin.cn/post/7116729520681549854 导读:相信无论是前端还是后端开发,都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致......
  • Timus Online Judge 1005. Stone Pile——01背包好题
    题目1005.StonePile@TimusOnlineJudge就是给你一组堆石头,分成两组,叫你求两组重量差的最小值思路这道题解法很巧妙,用01背包来解决dp[i][j]:表示前i个物品里面,花......
  • 支付插件-使用 woocommerce_api_(action) Action 钩子添加自定义 URL 到WooCommerce
    WooCommerce的woocommerce_api_(action) Action钩子可以让插件添加一个自定义回调到一个URL上面,当这个URL被访问的时候,自定义回调中的函数或方法就会执行,这个API......
  • 【转】YApi结合swag管理和生成go项目restful API文档
     原文:https://blog.csdn.net/tuobicui6522/article/details/102980653 swag命令安装: goinstallgithub.com/swaggo/swag/cmd/swag@latest swag命令对应的githu......