精华内容
下载资源
问答
  • pi的近似值计算:读入正整数n,求取pi的近似值,直到算到1/n或1/(n-1)。pi/4≈1-1/3+1/5-1/7+1/9+...问题分析代码实现 问题分析 本题是考验对循环、判断语句的使用。方法二的效率会提高些。 代码实现 #读入正整数n...

    pi的近似值计算:读入正整数n,求取pi的近似值,直到算到1/n或1/(n-1)。pi/4≈1-1/3+1/5-1/7+1/9+...

    问题分析

    本题是考验对循环、判断语句的使用。方法二的效率会提高些。

    代码实现

    #读入正整数n,求取pi的近似值,直到算到1/n或1/(n-1)。
    #π/4≈1-1/3+1/5-1/7+1/9+…
    
    import sys
    
    n=int(input('请输入正整数n:'))
    if n<=0:
        print('你输入的不是正整数,程序退出')
        sys.exit(0)
    
    #方法一:
    '''
    s = 0
    a = 0
    for i in range(1,n+1,2):
        s += 1 / i * (-1) ** a
        a += 1
    
    print('pi的近似值是', 4*s, sep='')
    #'''
    
    #方法二:本方法是要丢掉前面的项,每次只留两项,s.pop(i)移除列表中的第(i+1)个元素
    
    s=0
    flag=True
    
    for i in range(1,n+1,2):
        if flag:
            s += 1 / i
            flag = False
        else:
            s -= 1 / i
            flag = True
    
    print('pi的近似值是', 4*s, sep='')
    
    

    运行结果如下:

    在这里插入图片描述

    展开全文
  • python——计算圆周率近似值

    千次阅读 2020-05-06 20:52:29
    计算圆周率近似值 方法: 1.拉马努金法计算圆周率近似值: “数学家拉马努金(Srinivasa Ramanujan)找到了一个无限序列,可以用来生成π的数值近似值: 编写一个函数 ,使用这个公式计算并返回π的近似估计。它...

    计算圆周率近似值

    方法:

    1.拉马努金法计算圆周率近似值:
    “数学家拉马努金(Srinivasa Ramanujan)找到了一个无限序列,可以用来生成π的数值近似值:
    在这里插入图片描述

    编写一个函数 ,使用这个公式计算并返回π的近似估计。它应当使用一个循环来计算求和的每一项,直到最后一项的值小于1e-15 (这是Python对的标记法)。可以通过和math.pi 比较来检查计算的结果。”

    代码实现

    #拉马努金计算圆周率
    import math
    #求阶乘的函数
    def factorial(n):
       if n==0:
           return 1
       else:
           return n*factorial(n-1)
    
    #计算π值的函数
    def pi():
        sum =0
        k=0
        f=2*(math.sqrt(2))/9801
        while True:
            fz = (26390*k + 1103)*factorial(4*k)     #求和项分子
            fm = (396**(4*k))*((factorial(k))**4)    #求和项分母
            t = f*fz/fm
            sum += t
            if t<1e-15:                              #最后一项小于10^(-15)时跳出循环
                break
            k += 1                                   #更新k值
        return 1/sum
    
    print("pi的值为:",pi())
    #用于查看所写程序是否正确
    print("pi的标准值为:",math.pi)
    
    

    运行结果
    在这里插入图片描述

    2.蒙特·卡罗方法计算π值近似值:
    蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计算问题。假设有一块边长为2 的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x, y)必然在木板上(更多的时候是落在单位圆内),如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以4,这个数字会无限逼近圆周率的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法,如图所示。
    在这里插入图片描述

    编写程序,模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周率近似值。

    代码实现:

    from random import random
    print("请输入实验次数:")
    count =int(input())         #实验次数
    width = 1                   # 小正方形边长为1,小正方形的面积也为1
    cir_count = 0               #落在圆内次数初始为0
    for i in range(1,count):    #随机生成0-1的浮点数组成坐标
        x = random()
        y = random()
        if (x**2 + y**2) <= width: #比较坐标是不是在圆内,如果是落在圆内次数加1
            cir_count += 1
    pi = (cir_count/count)*4      #计算pi值
    print("pi的值为:",(pi))       #输出pi值
    

    运行结果:
    10次实验:
    在这里插入图片描述

    10000次实验:
    在这里插入图片描述

    1000000000次实验:

    在这里插入图片描述
    可以看出随着试验次数的增加,计算出来的π值会越来越精确。

    展开全文
  • pi的近似值 有题: 数学家拉马努金(Srinivasa Ramanujan)找到了一个无限序列,可以用来生成π的数值近似值: 编写一个函数estimate_pi,使用这个公式计算并返回π的近似估计。它应当使用一个while循环来计算...

    5.18小测

    求pi的近似值

    有题:
    数学家拉马努金(Srinivasa Ramanujan)找到了一个无限序列,可以用来生成π的数值近似值:
    在这里插入图片描述
    编写一个函数estimate_pi,使用这个公式计算并返回π的近似估计。它应当使用一个while循环来计算求和的每一项,直到最后一项的值小于1e-15(这是Python对10-15的标记法)。

    输入

    输出
    比如:3.14
    样例输入
    0
    样例输出
    3.141592653589793

    题解:

    #[MFTOLP]-C7-1-求pi的近似值
    import math
    
    def estimate_pi():
        k = 0
        pi = 0
        term = factorial(4*k)*(1103+26390*k)/(factorial(k)**4*396**(4*k))
        while term>=1e-15:
            pi = pi + term
            k = k + 1
            term = factorial(4*k)*(1103+26390*k)/(factorial(k)**4*396**(4*k))
    
        pi = 9801/(2*math.sqrt(2)*pi)
        return pi
    
    def factorial(n):
        factor = 1
        for i in range(n):
            factor = factor * (i+1)
        return factor
    
    print(estimate_pi())
    

    凯撒密码

    有题:
    凯撒密码(Caesar Cypher)是一个比较弱的加密形式,它涉及将单词中的每个字母“轮转”固定数量的位置。轮转一个字母意思是在字母表中移动它,如果需要,再从开头开始。所以‘A’轮转3个位置是’D‘,而’Z‘轮转一个位置是’A‘。

    要对一个单词进行轮转操作,对其中每一个字母进行轮转即可。例如,“cheer”轮转7位的结果是“jolly”,而“melon”轮转-10位结果是“cubed”。在电影《2001太空漫游》中,舰载机器人叫作HAL,这个单词正是IBM轮转-1位的结果。

    编写一个函数rotate_word,接收一个字符串以及一个整数作为参数,并返回一个新字符串,其中的字母按照给定的整数值“轮转”位置。

    你可以使用内置函数ord,它能够将一个字符转换为数值编码,以及函数chr,它将数值编码转换为字符。字母表中的字母是按照字母顺序编码的,所以,例如:

    ord(‘c’)-ord(‘a’) 
    2 
    

    [提示]:注意单词中的大小写不变。你可以用方法isupper或islower判定大小写。
    输入
    cheer
    7
    输出
    jolly
    样例输入
    cheer
    7
    样例输出
    jolly

    老师题解:

    #[MFTOLP]-C6-1-凯撒密码
    
    def rotate_word(s,n):
    
        length = len(s)
        for i in range(length):
            if s[i].isupper()==True:
                letter = (ord(s[i])-ord('A')+n)%26+ord('A')
                letter = chr(letter)
            elif s[i].islower()==True:
                letter = (ord(s[i])-ord('a')+n)%26+ord('a')
                letter = chr(letter)
            else:
                letter = s[i]
            print(letter,end='')
        #print('\n')
    
    s = input()
    n = int(input())
    rotate_word(s,n)
    
    

    由于我的复杂考虑(考虑到正负值得问题),我的题解为:

    str = input()
    n = int(input())
    def rotate_word(str,n):
        jj = ""
        for i in range(len(str)):
            if str[i].isupper()==True:
                if n>=0:
                    if ord(str[i])+n>ord('Z'):
                        jj+= chr(ord('A')+((ord(str[i])+n-ord('A'))%26))
                    else:
                        jj+= chr(ord(str[i])+n)
                else:
                    if abs(ord(str[i])+n)<ord('A'):
                        jj+= chr(ord('Z')+(ord(str[i])-ord('Z')+n)%-26)
                    else:
                        jj+= chr(ord(str[i])+n)
            elif str[i].islower()==True:
                if n>=0:
                    if ord(str[i])+n>ord('z'):
                        jj+= chr(ord('a')+((ord(str[i])+n-ord('a'))%26))
                    else:
                        jj+= chr(ord(str[i])+n)
                else:
                    if abs(ord(str[i])+n)<ord('z'):
                        jj+= chr(ord('z')+(ord(str[i])-ord('z')+n)%-26)
                    else:
                        jj+= chr(ord(str[i])+n)
            else:
                jj+=str[i]
        print(jj)
    rotate_word(str,n)
    
    展开全文
  • 巴塞尔问题,也就是以下级数和: ∑n=1∞1n2=lim⁡x→∞(112+122⋯+1n2)\sum_{n=1}^{\infty}\frac{1}{n^2} =\lim_{x \to \infty} (\frac{1}{1^2}+\frac...现在用python编写程序从正面逼近巴塞尔问题精确 直接计算

    巴塞尔问题,也就是以下级数的和:
    n=11n2=limx(112+122+1n2)\sum_{n=1}^{\infty}\frac{1}{n^2} =\lim_{x \to \infty} (\frac{1}{1^2}+\frac{1}{2^2}\cdots +\frac{1}{n^2} )
    其精确值已经被证明是 π26\frac{\pi ^2}{6}

    现在用python编写程序从正面逼近巴塞尔问题的精确值
    直接计算肯定精度不够
    采用手算除法的算法编写高精度小数计算类,暴力计算其近似值
    虽然十万个n也只能精确到小数点后四位。。
    在这里插入图片描述
    python代码如下:

    import numpy as np
        
    n = 100000  #定义n的个数
    M = 1     #分子
    N = 1000  #定义精确小数后面的位数
    
    class Multiple_decimals():   #高精度小数计算
        '''
           1、__init__ 方法的第一个参数永远是 self 
             __init__ 方法的内部,就可以把各种属性绑定到 self,
             因为 self 就指向创建的 实例本身
           2、使用了 __init__ 方法,
               在创建实例的时候就不能传入 空的参数了,
               必须传入与 __init__ 方法匹配的参数,
               但是 self 不需要传,python解释器会自己把实例变量传进去
         '''  
        def __init__(self,M,D,N):  #M为分子,D为分母,N为小数精度
            self.M = M
            self.D = D
            self.N = N
            self.div = div = np.zeros(self.N,dtype=int)
            if D:
                self.division()
        '''
           在python中一切皆对象嘛,
           之所以这些对象支持相加,
           是因为其内部实现了__add__这个魔法方法
        '''    
        def __add__(self,other):
            self.division_add(other.div)
            return self  #必须返回自身,不然一相加就Nonetype了
        
        def division(self):  #M分子,D分母,N小数位数
            r = self.M
            for i in range(self.N):
                n = 10*r/self.D
                r = 10*r%self.D
                self.div[i]=n
        
        def division_add(self,div_another):
            self.div=self.div+div_another
            for i in reversed(range(1,len(self.div))):
                self.div[i-1] += self.div[i]/10
                self.div[i] = self.div[i]%10
            
        def result_str(self):
            #map对列表里的每个元素执行相应函数
            return str(self.div[0]/10) + "".join(map(str,self.div[1:])) 
        
        def result_float(self):
            return float(self.result_str())
    
    bassaier= Multiple_decimals(M,0,N)
    for i in range(1,n+1):
        bassaier  += Multiple_decimals(M,i*i,N)
    
    
    print("近似值:%s" %(bassaier.result_str()))
    print("精确值:%s" %(str(np.pi*np.pi/6)))
    
    展开全文
  • 编写并提交一个Python程序,该程序通过计算以下总和来计算π的近似值: 当n接近∞时,该和接近π的真实值。 该方程式中的大“ E”表示“一遍又一遍地将其添加到右边,但是不断更改k的值。k的第一个值为零,最后一个...
  • python中圆周率的计算

    2020-10-04 16:35:19
    python中圆周率的计算圆周率计算利用近似公式计算圆周率蒙特卡罗法举一反三 圆周率计算 利用近似公式计算圆周率 数学公式代码实现 #CalPiV1.py pi = 0 N = 100 for k in range(N): pi +=1/pow(16,k)*(\ 4/(8*k+1...
  • 1.近似公式计算 #CalPi.py pi = 0; N = 100; for k in range(N): pi += 1/pow(16,k)*(4/(8*k+1)-2/(8*k+4)-1/(8*k+5)-1/(8*k+6)); print("圆周率的值是:{}".format(pi)); #运行结果 #圆周率的值是:3....
  • Python经典案例:圆周率的计算

    千次阅读 2020-02-22 16:10:17
    圆周率的近似计算公式: 上代码: #CalPiV1.py pi = 0 N = 100 for k in range(N) : pi += 1/pow(16,k)*( 4/(8*k+1) – 2/(8*k+4) - 1/(8*k+5) – 1/(8*k+6)) print("圆周率是: {}".format(pi)) 上面是通过...
  • 国际公认的PI值计算采用蒙特卡洛方法。 蒙特卡洛方法,又称随机抽样或统计试验方法。当所求解问题是某种事件出现概率,或某随机变量期望时,可以通过某种“试验”方法求解。 也可以说蒙特卡洛是利用随机试验求解...
  • 圆周率的近似计算公式 蒙特卡罗方法 公式法代码 #CalPiV1.py pi = 0 N = 100 for k in range(N): pi += 1/pow(16,k)*( \ 4/(8*k+1) - 2/(8*k+4) - \ 1/(8*k+5) - 1/(8*k+6) ) print("圆周率是: {}".format...
  • 此仓库是各种python脚本集合。 在此仓库中,有各自用途... 该脚本对于显示使用蒙特卡洛方法近似pi值的方法很有用。 还使用库中@jit (即时)装饰器对其进行了优化。 博客阅读器 博客阅读器是终端阅读器,可以
  • 文章目录前言sagemath用法1.sagemath计算离散对数2.sagemath求逆元3.sagemath扩展欧几里得算法4.sagemath孙子定理(中国剩余定理)5.sagemath求欧拉函数6.sagemath输出表达式近似值7.sagemath素数分布(Pi(x))8.sage...
  • 圆周率的近似计算公式 1、程序如下: #CalPiV1.py pi = 0 N = 100 for k in range(N): pi += 1/pow(16,k)*(4/(8*k+1) - 2/(8*k+4) - 1/(8*k+5) - 1/(8*k+6)) print("圆周率是: {}".format(pi)) 结果:....
  • 程序控制结构大小写转换判断位数并打印各位值地铁车票考试评级判断星期身体质量指数BMI阶乘水仙花数猴子摘桃素数随机密码生成圆周率计算pi近似值篮球弹跳猜数字函数打招呼函数能否组成三角形转换秒为时间最大公...
  • 程序的控制结构大小写转换判断位数并打印各位的值地铁车票考试评级判断星期身体质量指数BMI阶乘水仙花数猴子摘桃素数随机密码生成圆周率的计算pi的近似值篮球弹跳猜数字函数和代码复用打招呼函数能否组成三角形...
  • 阿尔法python练习(4-7答案)

    千次阅读 多人点赞 2020-03-31 00:03:09
    程序的控制结构大小写转换判断位数并打印各位的值地铁车票考试评级判断星期身体质量指数BMI阶乘水仙花数猴子摘桃素数随机密码生成圆周率的计算pi的近似值篮球弹跳猜数字函数和代码复用打招呼函数能否...
  • python math库常用函数

    千次阅读 2019-06-01 11:36:02
    π的近似值,15位小数 .e 自然常数 e e的近似值,15位小数 ceil(x) [x] 对浮点数向上取整 floor(x) [x] 对浮点数向下取整 pow(x, y) x^y 计算x的y次方 log(x) log x 以e为基数的对数 log10(x) log10x 以...
  • python数学库math模块

    2017-10-06 22:45:00
    π的近似值,15位小数 .e 自然常数 e e的近似值,15位小数 ceil(x) [x] 对浮点数向上取整 floor(x) [x] 对浮点数向下取整 pow(x, y) x^y 计算x的y次方 log(x) log x 以e为基数的...
  • 可以看出,当趋于1,y=1,与预测一致,此时付出代价cost趋于0,若趋于0,y=1,此时代价cost非常大,我们最终目的是最小化代价值 同理图像如下(y=0): 2、梯度 同样对代价函数求偏导: 可以看出与...
  • π的近似值,15位小数 自然常数 e e的近似值,15位小数 ceil(x) ⌈x⌉ 对浮点数向上取整 floor(x) ⌊x⌋ 对浮点数向下取整 pow(x,y) x^y 计算x的y次方 exp(x) e^x 以e为基的指数 log(x) ln x 以e为基的...
  • π的近似值,15位小数 自然常数e e的近似值,15位小数 ceil(x) 对浮点数向上取整 floor(x) 对浮点数向下取整 pow(x,y) 计算x的y次方 log(x) 以e为基的对数 log10(x) 以10为基的对数 sqrt(x) 平方根 ...
  • 1.用格雷格里公式求pi的近似值,当某一项的绝对值小于10的-6次方时停止 pi/4 = 1-1/3+1/5-1/7+…+(-1)**(n+1)/(2*n-1) 2.将一个任意位数的正整数倒序输出,例如:输入12345,输出54321 num=input("请输入一组数:") ...
  •  圆周率π是一个无理数,没有任何一个精确公式能够计算π, π的计算只能采用近似算法。  国际公认的PI值计算采用蒙特卡洛方法。 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方法。当...
  • 运用python编程,实现了一个伪随机数发生器[1],并计算的近似值以及所给积分的近似值,具体结果如图1。横坐标表示随机投点数,上图纵坐标表示对应的真实值,下图纵坐标表示所需的时间。从图1(左)中分析得到,当...
  • 【超全golang面试题合集+golang学习指南+golang知识图谱+成长路线】 一份涵盖大部分golang程序员所需要掌握核心知识。 脑图持续不断更新中,在线查看地址 后续文章和内容会不断更新到 github项目 中,...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

python计算pi的近似值

python 订阅