python 中的高斯-勒让德算法

2024-01-10

我需要一些帮助来计算 Pi。我正在尝试编写一个 python 程序来将 Pi 计算为 X 位数字。我已经尝试了 python 邮件列表中的几个,但它对我的使用来说太慢了。 我读过有关高斯-勒让德算法 http://en.wikipedia.org/wiki/Gauss-Legendre_algorithm,我尝试将其移植到Python但没有成功。

我正在阅读Here http://www.geocities.com/hjsmithh/Pi/Gauss_L.html,对于我哪里出错的任何意见,我将不胜感激!

它输出:0.163991276262

from __future__ import division
import math
def square(x):return x*x
a = 1
b = 1/math.sqrt(2)
t = 1/4
x = 1
for i in range(1000):
    y = a
    a = (a+b)/2
    b = math.sqrt(b*y)
    t = t - x * square((y-a))
    x = 2* x

pi = (square((a+b)))/4*t
print pi
raw_input()

  1. 你忘记了括号4*t:

    pi = (a+b)**2 / (4*t)
    
  2. 您可以使用decimal以进行更高精度的计算。

    #!/usr/bin/env python
    from __future__ import with_statement
    import decimal
    
    def pi_gauss_legendre():
        D = decimal.Decimal
        with decimal.localcontext() as ctx:
            ctx.prec += 2                
            a, b, t, p = 1, 1/D(2).sqrt(), 1/D(4), 1                
            pi = None
            while 1:
                an    = (a + b) / 2
                b     = (a * b).sqrt()
                t    -= p * (a - an) * (a - an)
                a, p  = an, 2*p
                piold = pi
                pi    = (a + b) * (a + b) / (4 * t)
                if pi == piold:  # equal within given precision
                    break
        return +pi
    
    decimal.getcontext().prec = 100
    print pi_gauss_legendre()
    

Output:

3.141592653589793238462643383279502884197169399375105820974944592307816406286208\
    998628034825342117068
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 中的高斯-勒让德算法 的相关文章

随机推荐

  • 使用不等于、!= 访问多个项目

    我有以下 Pandas DataFrame 对象df 这是一份列出出发日期 预定出发时间和火车公司的火车时刻表 import pandas as pd df Year Month DayofMonth DayOfWeek Departure
  • 将指向堆栈变量的指针传递给 realloc() 是否有效?

    int main char myString NULL realloc myString 5 strncpy char myString test 5 似乎工作正常 但我仍然对堆栈与堆有点困惑 这是允许的吗 如果允许的话myString需要
  • 如何保持 Logstash 运行以便将数据从 RDBMS 同步到 ES?

    我是 ELK 堆栈的新手 所以请原谅我的无知 我已经能够让 Logstash 将数据从我的数据库发送到 Elasticsearch 但传输完成后它就会退出 我如何保持它运行以使它们保持同步 谢谢 您需要指定一个schedule https
  • 强制 linux 排序使用字典顺序

    我生成了一个带有伪随机数的文本文件 如下所示 853340442 1130519212 2070936922 707168664 2076185735 2135012102 166464098 1928545126 5768715 1060
  • 在迭代 Python 字典时修改它

    假设我们有一个 Python 字典d 我们像这样迭代它 for k v in d iteritems del d f k remove some item d g k v add a new item f and g只是一些黑盒转换 换句话
  • 如何防止在更改源列表时调用 ComboBox Change 事件

    TL DR 如何防止在源列表中添加或删除项目时触发 ActiveX ComboBox 请注意我见过这个帖子 https stackoverflow com questions 19276861 how to prevent activex
  • 按钮周围的虚线边框

    我试图在按钮周围绘制虚线边框 但是边框没有出现 不确定我在这里做错了什么 你能帮忙吗 我的 Xaml 代码
  • 在大型 MySQL 表中添加新列

    在大型 MySQL 表中添加新列的最快方法是什么 ALTER TABLE ADD COLUMN创建完整表的副本 然后用新创建的表替换旧的副本 当此进程运行时 原始表是可读的 但所有插入和更新都会停止 在大型表上 复制可能需要很长时间 有什么
  • 如何将 mechanize.Browser() cookie 保存到文件?

    我怎样才能使Python的模块mechanize 特别是mechanize Browser 将其当前的cookie保存到人类可读的文件中 另外 我该如何将该 cookie 上传到网页上呢 Thanks Deusdies 我刚刚参考了 Myk
  • gRPC 客户端不处置 Channel

    我正在使用 gRPC 开发 net core 2 0 应用程序并发现一个问题 删除对 gRPC 客户端类实例的引用后 仍然存在使用资源 内存和处理器 的通道 示例代码 public class MyClient ClientBase pub
  • 软标签上的 scikit-learn 分类

    根据文档 可以指定不同的损失函数SGDClassifier 据我了解log loss is a cross entropy理论上可以处理软标签的损失函数 即以一些概率 0 1 给出的标签 问题是 是否可以使用SGDClassifier wi
  • 在WSO2 ESB 4.7.0中,我们可以在接收序列中进行JMS回滚吗?

    我已经在 WSO2 ESB 4 7 0 中配置了带有事务和 CLIENT ACKNOWLEDGE 的 Apache ActiveMQ axis2 xml 配置是
  • Intellisense 不工作 golang 测试文件

    标题说明了一切 我打开一个测试文件 类型 package 什么也没有出现 这不是延迟问题 这不是一个空包裹 如何开启智能感知 更新 我已经向 VSCode Golang 团队提交了错误通知单 当我们找到更多信息时 我会在这里报告 https
  • ctypes:将字符串转换为函数?

    我正在读这篇文章在笔测试期间逃避防病毒软件的技巧 http pen testing sans org blog pen testing 2011 10 13 tips for evading anti virus during pen te
  • Restful Web 服务认证

    我有一个 Restful Web 服务 API 正在被不同的第 3 方使用 该 API 的一部分受到限制 您需要用户名 密码才能访问它 我想知道实施身份验证的最佳方法是什么 我使用的是 https 因此通信是加密的 我有两个想法 在用户开始
  • Qt 右键单击​​ QListWidget 打开上下文菜单并删除项目

    我想知道当我右键单击表格项目时如何打开弹出菜单 在弹出菜单中 应给出一些操作 例如添加和删除 这将创建新行或删除所选行 我是 Qt 世界的新手 所以如果有人能给我完整的详细信息 如果可能的话 提供代码 那么我将非常感谢他 她 谢谢 My g
  • Excel VBA:工作表保护未按预期工作

    使用 VBA 我试图禁止插入和删除行和列 同时允许用户编辑单元格内容 我希望以下调用能够解决问题 ActiveSheet Protect Password SomePassword AllowInsertingColumns False A
  • ASP.NET 2.5 前缀 ctl00 和 ASP.NET 4 不前缀 ctl00

    有谁知道为什么 ASP NET 4 放弃了ctl00ASP 控件上的前缀 有没有我错过的设置 在 ASP NET 4 0 中 他们引入了对更简洁的 HTML 语法的支持 你可以阅读相关内容在 Scott Gu 的博客 http weblog
  • 原生 Javascript 页面加载消息?

    我想要一个页面阻塞 加载脚本 该脚本将覆盖整个页面并在加载所有资源时显示 正在加载 消息 以避免无样式内容的闪烁等 我基本上想要类似的东西jQuery 的 BlockUI http jquery malsup com block page的
  • python 中的高斯-勒让德算法

    我需要一些帮助来计算 Pi 我正在尝试编写一个 python 程序来将 Pi 计算为 X 位数字 我已经尝试了 python 邮件列表中的几个 但它对我的使用来说太慢了 我读过有关高斯 勒让德算法 http en wikipedia org