首页 > 其他分享 >如何判断我计算的圆周率pi是否准确?

如何判断我计算的圆周率pi是否准确?

时间:2023-11-02 20:24:21浏览次数:29  
标签:数字 验证 圆周率 世界纪录 算法 计算 pi 准确

内容来自 DOC https://q.houxu6.top/?s=如何判断我计算的圆周率pi是否准确?

我正在尝试各种方法来编写一个程序,该程序按顺序给出圆周率的位数。我尝试了泰勒级数方法,但它被证明收敛速度极慢(当我过了一段时间将我的结果显示与在线值进行比较时)。无论如何,我正在尝试更好的算法。

因此,当我编写程序时,遇到了一个问题,就像所有的算法一样:我如何知道我已经计算出的n位数字是准确的?


既然我是目前圆周率位数最多的世界纪录保持者,我将补充我的【两点看法】:

除非你真的要创造新的世界纪录,否则通常的做法只是将计算出的数字与已知的值进行比对。这很简单。

实际上,我有一个网页列出了一些数字片段,用于验证计算结果是否与它们匹配:http://www.numberworld.org/digits/Pi/


但是当你进入世界纪录领域时,就没有什么东西可以与之比较了。

历史上,验证计算出的数字是否正确的标准方法是使用第二种算法重新计算这些数字。因此,如果任何一种计算都出错了,最终的位数就不会匹配。

这通常会使所需时间增加一倍以上(因为第二种算法通常较慢)。但这是唯一一种一旦你进入了从未计算过的位数和新的世界纪录的未知领域,就可以验证计算出的数字的方法。


回到超级计算机设定记录的时代,两种不同的【AGM算法】经常被使用:

这些都是【O(N log(N)^2)】算法,很容易实现。

然而,现在的情况有些不同。在过去的三个世界纪录中,我们不是执行两次计算,而是只使用最快的已知公式(【Chudnovsky公式】)执行一次计算:

Enter image description here

这个算法很难实现,但比AGM算法快得多。

然后我们使用【BBP公式】来验证二进制数字。

Enter image description here

这个公式允许你计算任意的二进制数字 而不需要 计算所有在它之前的数字。因此,它用于验证最后几个计算出来的二进制数字。因此,它比完整的计算要快得多。

这种算法的优点有:

1.只需要一次昂贵的计算。

缺点是:

1.需要实现【Bailey–Borwein–Plouffe】(BBP)公式。
2.需要额外的一步来验证从二进制到十进制的基数转换。

我略过了一些关于为什么验证最后几位数字意味着所有数字都是正确的细节。但是,由于任何计算错误都会传播到最后几位数字,所以这是显而易见的。


实际上,这一步(验证转换)非常重要。之前的一位世界纪录保持者实际上因为我没有给出足够的描述它的工作原理而指出了我的错误。

因此,我从我的博客中摘录了以下代码段:

N = # of decimal digits desired
p = 64-bit prime number

Enter image description here

使用十进制算术计算A,使用二进制算术计算B。

Enter image description here

如果 A = B,则“极高概率”下,转换是正确的。


更多阅读资料,请参见我的博客文章【Pi - 5 Trillion Digits】。

标签:数字,验证,圆周率,世界纪录,算法,计算,pi,准确
From: https://www.cnblogs.com/xiaomandujia/p/17806205.html

相关文章

  • 在CMake中配置使用Intel One API并启用OpenMP(阶段2)
    本示例尝试使用CMake配置使用IntelOneAPI编译器编译支持OpenMP的程序。环境VisualStudio2022CommunitywithC++desktopIntelOneAPI2023.2withVSintergrationCMake3.27.7样例程序代码OpenMPDemo.cpp//File:OpenMPDemo.cpp//Coding:utf-8#include<i......
  • spi-flash 启动适配
    spi-flash启动适配 2022-07-06编辑本页   对于从spi-flash启动系统,需要对uboot/dts/内核配置都有所修改,打包与烧写请参考一键烧录及脚本使用说明以下将以16Mflash为例,介绍spiflash的适配过程。一、分区规划#下表为分区规划表:分区序号分区大小......
  • nginx报错 [error] 612#4188: CreateFile() "C:\yjzx\nginx-1.24.0/logs/nginx.pid"
    背景无论是nginx-sstop还是nginx-sreload命令,都会出现这个错误。[error]612#4188:CreateFile()"C:\yjzx\nginx-1.24.0/logs/nginx.pid"failed(2:Thesystemcannotfindthefilespecified)查找logs下nginx.pid文件确实没有创建成功,在网上查找了下了解决办法。发......
  • 【python】-bash: /usr/local/bin/pip: /usr/bin/python: bad interpreter: No such f
    安装单独的第三方库时没有问题pipinstallpandas但是一旦使用requirement.txt批量安装第三方库时就会出现-bash:/recorddata/rebuydata/hppy/soft/python3/bin/pip3:/usr/local/source/hppy/soft/python3/bin/python3.6:badinterpreter:没有那个文件或目录badinterpreter......
  • javaapi、spark、flink 创建Iceberg表,hive 和impala无法正常读取解决
    spark、flink创建Iceberg表中,元数据存储在hive的meta_store,发现hive或者impala无法正常读取报错。事实上解决方案是在spark、flink的SQL中执行语句:addiceberg相关引擎的runntime的jar;ALTERTABLEtSETTBLPROPERTIES('storage_handler'='org.apache.iceberg.mr.hive......
  • Intrepid—总线采集测试仿真工具
    产品概述    VehicleSpy是英特佩斯推出的简单易用的高性价比总线工具,包含分析软件和采集调试硬件,具备对各类总线数据的网络监控、诊断、总线分析、数据采集、节点仿真、自动化测试等功能,目前支持的总线类型包含CAN、CANFD、LIN、FlexRay、车载以太网等各类总线格式。 ......
  • Oracle 列传行UNPIVOT
    语法:UNPIVOT(新列名FOR聚合列名IN(对应的列名1…列名n))INCLUDE|EXCLUDENULLS子句参数可以控制在结果集中是否保留值为NULL的行,默认为EXCLUDENULLS,即去除空值行。--列转换行UNPIVOTSELECT*FROM(SELECTA.*,B.DEPT,B.SECTION,B.LZ,B.LZ_DATEFROMGC_DWT_OA.I......
  • logstash同步多个表的配置(使用pipeline)
     说明:我们这里每个表对应一个配置文件,当然也可以使用多个表使用一个配置文件(多个jdbc进行配置) 1.准备配置文件表1:[root@host135config]#moresync_mysql2es.conf#logstash输入配置input{#jdbc输入配置,用来指定mysql中需要同步的数据查询SQL及同步周期jdbc......
  • API管理平台搭建过程问题总结​
    API管理的定义和好处API管理是指对应用程序编程接口(API)进行集中管理、监控和维护的过程。API是用于不同软件之间进行通信和交互的编程接口,通过API管理可以有效地管理和控制API的使用、访问和安全性。API管理的好处包括:1、提高开发效率:通过API管理,开发团队可以更好地共享和重用API,避......
  • api-ms-win-core-path-l1-1-0.dll下载(win7-32位)
      下载 api-ms-win-core-path-l1-1-0.dll 后拷贝到文件夹:32位系统 c:\windows\system32  下载链接: https://www.dll-files.com/api-ms-win-core-path-l1-1-0.dll.html ......