python计算圆周率

这篇具有很好参考价值的文章主要介绍了python计算圆周率。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近一段时间在学习python算法,今天分享5种python计算圆周率的方法:

1.割圆法,2.无穷级数法, 3.蒙特卡洛法,4 .梅钦法,5. 拉马努金法

题目来自头歌习题,希望能帮到大家。代码如下:

1.割圆法

'''
编程实现割圆法计算圆周率,并输出分割不同次数时边数、圆周率值以及计算所得圆周率值与math库中的圆周率值的偏差。
'''

import math

def cutting_circle(n):      # n为分割次数
    """接收表示分割次数的整数n为参数,计算分割n次时正多边形的边数和圆周率值,返回边数和圆周率值"""
    side_length = 1  # 初始边长
    edges = 6  # 初始边数
    #######################Begin############################
    # 补充你的代码
    def length(x):
        h = math.sqrt(1-(x /2)**2)
        return math.sqrt((x /2)**2 + (1-h)**2)
    for i in range(n):
        side_length = length(side_length)
        edges *=2
        pi = side_length*edges/2

    ########################End###########################
    return edges, pi

if __name__ == '__main__':
    times = int(input())          # 割圆次数
    edges, pi =cutting_circle(times) #调用函数返回值
    #######################Begin############################
    # 补充你的代码
    print(f'分割{times}次,边数为{edges},圆周率为{pi:.6f}')
    print(f'math库中的圆周率常量值为{math.pi:.6f}')                               # 圆周率

    ########################End###########################

2.无穷级数法

'''
使用无穷级数这个公式计算π值,输入一个小数作为阈值,当最后一项的绝对值小于给定阈值时停止计算并输出得到的π值
'''


def leibniz_of_pi(error):
    """接收用户输入的浮点数阈值为参数,返回圆周率值"""
    # ===================Begin====================================
    # 补充你的代码
    a = 1
    b = 1
    sum = 0
    while 1/ b > error:
        if a % 2 != 0:
            sum += 1 / b
        else:
            sum -=  1/ b
        a += 1
        b += 2
    pi = sum*4
    return pi
    # =====================End==================================


if __name__ == '__main__':
    threshold = float(input())
    print("{:.8f}".format(leibniz_of_pi(threshold)))  # 保留小数点后八位

3.蒙特卡洛法

import random
def monte_carlo_pi(num):
    """接收正整数为参数,表示随机点的数量,利用蒙特卡洛方法计算圆周率
    返回值为表示圆周率的浮点数"""
    #====================Begin===================================
    # 补充你的代码
    a = 0
    count = 0
    while a < times:
        x, y = random.uniform(-1, 1), random.uniform(-1, 1)
        if x**2 + y**2 <=1:
            count += 1
        a +=1
    return 4*count / a 
    #=====================End==================================

if __name__ == '__main__':
    sd = int(input())             #读入随机数种子
    random.seed(sd)               #设置随机数种子
    times = int(input())          # 输入正整数,表示产生点数量
    print(monte_carlo_pi(times))  # 输出圆周率值,浮点数

4 .梅钦法

'''
利用梅钦公式计算圆周率的大小
'''
import math
def machin_of_pi():
    """用梅钦级数计算圆周率,返回圆周率值"""
    #################Begin####################################
    pi  = 4*(4*math.atan(1/5)-math.atan(1/239))

    #################End####################################
    return pi
 
if __name__ == '__main__':
    cal_pi = machin_of_pi()  # 调用判断类型的函数
    print(cal_pi)                    # 输出函数运行结果

5. 拉马努金法

'''
输入一个正整数n,使用拉马努金法公式计算思加n次时的圆周率值。
'''
import math

def ramanujan_of_pi(n):
    """接收一个正整数n为参数,用拉马努金公式的前n项计算圆周率并返回。"""
    ################Begin#######################
    def sumk (k):
        s =1
        for i in range(1,k+1):
            s *= i
        return s
    a = 0
    for i in range (n) :
        a += (sumk(4*i))*(1103+26390*i)/(sumk(i)**4*396**(4*i))
    pi = 1/a*9801/2/2**(1/2)   

    ################End#######################
    return pi
if __name__ == '__main__':
    n = int(input())                
    cal_pi = ramanujan_of_pi(n)  
    print(cal_pi)                    # 输出函数运行结果

在你还没成功之前,没人会对你的努力感兴趣,累了可以休息,但不要放弃,今天不行明天再来,你的坚持一定很酷,希望你所盼望的,终究会到来。👏文章来源地址https://www.toymoban.com/news/detail-506374.html

到了这里,关于python计算圆周率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【人工智能的数学基础】圆周率(Ratio of Circumference to Diameter)的计算

    Ratio of circumference to diameter. 圆周率

    2024年02月07日
    浏览(54)
  • 【基础算法】圆周率的多种方法求算 & C++实现

            一个圆如下面左图所示,其半径为1,其内部内接一个正六边形。设正六边形的边长为y1。由几何知识可得知y1=1,所以圆的周长可近似为正六边形的周长C=6×y1=6.所以圆周率为前面的近似圆周长与圆直径之比,即C/2= 3 ≈π ,这就是按照割圆法来得到圆周率近似值的方

    2024年02月05日
    浏览(53)
  • 蓝桥杯专题-真题版含答案-【大衍数列】【圆周率】【分糖果】【等额本金】

    点击跳转专栏=Unity3D特效百例 点击跳转专栏=案例项目实战源码 点击跳转专栏=游戏脚本-辅助自动化 点击跳转专栏=Android控件全解手册 点击跳转专栏=Scratch编程案例 点击跳转=软考全系列 点击跳转=蓝桥系列 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、

    2024年02月13日
    浏览(49)
  • 0基础学习VR全景平台篇 第76篇:全景相机-圆周率全景相机如何直播推流

    圆周率科技,成立于2012年,是中国最早投身嵌入式全景算法研发的团队之一,亦是全球市场占有率最大的全景算法供应商。相继推出一体化智能屏、支持一键高清全景直播的智慧全景相机--Pilot Era 和Pilot One ,为用户带来实时畅享8K的高清沉浸式直播体验。 一、相机端 1、相机

    2024年02月14日
    浏览(42)
  • 线性卷积和循环卷积(圆周卷积)

    一、线性卷积: 一个输入经过一个线性时不变系统,得到的输出就是线性卷积。 举例: x[n] = [1, 3, 2, 4]; h[n] = [2, 1, 3]; y[n] = [2, 7, 10, 19, 10, 12]; 矩阵表示形式: 输出的长度等于两个输入长度的和减一(L1 + L2 - 1). 二、循环卷积 x[n] 和 h[n]都是周期的,下面公式中的h((n-m))不同于

    2024年02月11日
    浏览(33)
  • 【C语言】求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积

    求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积 设圆半径r,圆柱高h,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。编写程序用scanf输入数据,输出计算结果;输出时要求有文字说明,取小数点后2位数字。 这段代码实现了以下功能: 引入头文件 stdio.h,其中

    2024年02月09日
    浏览(29)
  • 最优化方法Python计算:一元函数导数计算

    定义1 给定连续函数 f ( x ) f(x) f ( x ) , x ∈ Ω ⊆ R xinOmegasubseteqtext{ℝ} x ∈ Ω ⊆ R 。设 x , x 1 ∈ Ω x,x_1inOmega x , x 1 ​ ∈ Ω , Δ x = x − x 1 Delta x=x-x_1 Δ x = x − x 1 ​ 称为变量 x x x 的 差分 。此时, x = x 1 + Δ x x=x_1+Delta x x = x 1 ​ + Δ x 。称 f ( x 1 + Δ x ) − f ( x 1 ) Δ x

    2023年04月23日
    浏览(54)
  • 【Python】使用Python计算简单数值积分

    题外话,Python语言命名的来源:(见下图)Monty Python巨蟒剧团 (1) (2) (3) 《14天自造量子计算机(Python版)》,【日】远藤理平 著,陈欢 译,中国水利水电出版社,2023年9月。

    2024年04月22日
    浏览(44)
  • python 进行卫星坐标计算和接收机坐标计算

    python 进行卫星坐标计算和接收机坐标计算 卫星坐标计算 流程以及相关公式 从上一篇文章中我们获取到了广播星历中的文件(N文件读取),通过N文件中的数据以及周内秒我们可以计算出卫星的坐标。Python读取O文件以及N文件_Hxdih的博客-CSDN博客 在计算卫星坐标时,我们需要做到

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包