You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python近似圆周率函数实现问题求助——Saylor课程单元5测验

解决嵌套根号近似圆周率的实现问题

首先,你的代码存在几个关键错误:

  • 循环内的print(V=(...))语法无效,不能在print中直接赋值变量
  • 错误地将参数N当作函数调用(N(math.sqrt(2)+math.sqrt(2)))
  • 没有正确实现嵌套根号的迭代逻辑,变量V无有效初始化,也未累积乘积项

正确实现逻辑(基于Viète圆周率公式)

题目要求的嵌套根号近似法对应Viète公式,核心是通过迭代计算余弦项的乘积:

  1. 初始项:第一个余弦项为cos(π/4) = √2/2
  2. 迭代规则:每一项cₙ = √(2 + 2*cₙ₋₁)/2(实现嵌套根号的累加)
  3. 累积所有项的乘积P,最终通过π ≈ 2/P计算估计值
  4. 比较估计值与真实π的误差是否小于1e-7,返回布尔结果

修正后的代码

import math

def pi_approx(N):
    # 初始化乘积为第一个余弦项
    product = math.sqrt(2) / 2
    current_term = product
    
    # 迭代计算嵌套根号的余弦项并累积乘积
    for _ in range(N - 1):
        current_term = math.sqrt(2 + 2 * current_term) / 2
        product *= current_term
    
    # 计算π的估计值
    pi_est = 2 / product
    # 判断误差是否符合要求
    return math.fabs(pi_est - math.pi) < 1e-7

说明

  • 当N足够大时(比如N=10),估计值与真实π的误差会小于1e-7,函数返回True
  • 循环从N-1次开始,因为我们已经初始化了第一个项,后续每次迭代添加一层嵌套根号

内容的提问来源于stack exchange,提问作者Emilio Velazquez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:15:35