用python计算圆周率的平方_Python实例1:圆周率的计算(蒙特卡罗方法)

10fedfa9d72b566b24d11173a4fae0de.png

圆周率的计算

    正方形内部有一个内切圆,则正方形和内切圆的面积之比为:(2r)^2/Πr^2 = 4/Π

    因此,圆周率的计算问题转化为计算正方形的面积和其内切圆的面积的问题。


81f951a55c9dfb572dc205c01890c743.png

方法

  • 假设有若干个随机的点分布在正方形内

  • 则正方形内点的个数和内切圆内点的个数之比就近似与正方形和内切圆的面积之比。

  • 点数越多,结果越准确


    e81435907239238a0c1ef0ebf4250f05.gif


基本思路

  • 通过random产生一系列[-1,1]的随机数坐标(x,y)

  • 判断点(x,y)是否落在内切圆内

  • 判断的方法是随机点到圆心的距离小于1

  • 即满足公式:x^2 + y^2 <= 1


结果

以下分别为枚举点1000,10000,100000,10000000的结果。

394aa83d70df0775065480baa9ed9a72.png


代码与效果

223a52f44120dee9c1fdd9d3c9163500.png

import randomimport mathimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom matplotlib.patches import Circlen = 1000#统计在圆内的点数cnt = 0r = 1.0a,b = 0.0,0.0# 设置画布,表示figure 的大小为宽、长(单位为inch)fig = plt.figure(figsize = (12,12))#添加子图ax = fig.add_subplot(1,1,1)while n > 0:    n = n - 1# 从一个均匀分布中随机采样,区间为左闭右开    x = random.uniform(-1,1)    y = random.uniform(-1,1)#画点    plt.scatter(x,y,marker='.',s = 10,alpha = 0.5)#判断点是不是在圆内    if pow(x,2) + pow(y,2) <= 1:        cnt= cnt + 1circle = Circle(xy = (a,b),radius = r, alpha = 0.5 ,fill=False,edgecolor='r')rectangle = plt.Rectangle((-1,-1),2,2,fill=False,edgecolor='black', linewidth=2)ax.add_patch(circle)ax.add_patch(rectangle)plt.grid()pi = 4 * cnt / 1000print("pi=" + str(pi))

c2b3e192dea96a8e718524ed4f373487.png

每天半小时,Python再也不是从入门到放弃啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值