关于圆周率

关于圆周率

大约20年前的2005年,我在上大学的时候,网上流传这样一段程序,被称之为“外星人计算圆周率程序”。程序如下:

long a = 10000, b, c = 2800, d, e, f[2801], g;

main() {for (; b - c;) f[b++] = a / 5;

for (; d = 0, g = c * 2; c -= 14, printf("%.4d", e + d / a), e = d % a)

for (b = c; d += f[b] * a, f[b] = d % --g, d /= g--, --b; d *= b); scanf("%s");}

这一段C语言的程序仅仅用了4行代码,就计算出圆周率的前800位,

31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185

当时不由得为其赞叹。对圆周率的展开式的研究,可以帮助认识到底什么是圆,或者说圆的结构到底是什么样的,于是一场探求圆的真相的旅程就此开始了。

二十年后,让我们对这个旅程做一个阶段性的总结。

据说这个代码的的算法来自于沃里斯乘积,


但这一点终未能证实。不过这并不影响我们的分析,因为具体分析代码,可以得到,


两边都除以2,得到,


我们目前只关心即可,因为它是某种“单位”,而它的倍数只是简单的乘进去到每一项即可。此外,它还有其它的写法,比如把嵌套展开,


写成求和的形式,


我们的问题不在于它是什么形式,而是在于这个形式到底代表了什么意思。

先前在“楼梯悖论”中讨论过复平面和平面直角坐标系的差别。简单说,就是复平面是有“旋向”的,而平面直角坐标系则可以认为是两个旋向同时存在且是相互等价的。正如图论中的有向图节点之间的边是有源和宿之分的,而无向图节点之间的边只起到链接节点构成关系的作用。为了简化问题,我们只讨论复平面的正旋向,而不考虑另一个旋转的方向。

在复平面中,我们画出坐标系:实轴正半轴的单位位1,也就是


虚轴的正半轴的单位为,也就是,


实轴的负半轴的单位为-1,也就是


虚轴的负半轴单位为,也就是

然后就转回到实轴的正半轴了。这四个值,看上去都是单位,但是实际上单位的大小大相径庭。我们知道虚数单位代表着周期,它可以非常大,相对于实轴正半轴的单位1来说,虚轴正半轴的单位可以认为是无穷大(决定于的大小),而实轴负半轴又是这个无穷大的平方那么大,以及虚轴负半轴又是这个无穷大的立方那么大,这些都是“单位”,但是一个比一个大得多。所以实际上复平面按照其实际数量来说,并不是像它看上去那么方方正正的,而是遵循渐开线的原则逐渐扩展的,而且相邻两个维数之间构成的单位方格也不是方方正正的,而是扭曲放大的。正如你所想象的,这样的图像“一点都不圆”,复制若干次旋转不同角度之后就像是星系中的多个旋臂构成的漩涡一样。

那么,到底是什么使得这个复平面显得方方正正,而中心的单位圆显得“圆”起来的呢?是观察者。比如虽然虚轴正半轴的单位比实轴正半轴长的多,但是我们知道,





所有轴的正负半轴,都符合,


也就是所有轴的单位对于虚数单位同余为0。既然如此,我们也不难想到,不仅仅是轴,复平面单位圆上的每一条半径,模上虚数单位的结果也必须是0,不然圆周上就会有“毛刺”,圆就不圆了。

所以,由此我们可以看出这样一种现实,从单位圆的实轴正向开始,辐射出的每一条“半径”,都符合


那么,我们就可以把这些“半径”的长度都列出来,



这就构成了半径的集合。在第一象限,半径的实际长度就是1到的自然数长度,这些长度显然都可以模1。但这不符合,


于是我们把所有一周的长度都乘以虚数单位,那么所有这些长度都可以模,这时候我们得到这些“半径”集合为,


这相当于把先前的单位圆逆时针旋转了90度。以下我们用这个旋转了90度的单位圆进行讨论,以保证这些半径模都等于0(避免旋转90度之前,的情况),而且要知道四个象限的情况是中心对称的,由此我们只需要研究第一象限即可(旋转前的第二象限)。

可见在这个结构中,相继两条半径的长度关系就是


的关系,而它们在平面之中又都没有而造成的毛刺,所以复平面上的单位圆实际上就是若干倍虚数单位的长度所坐落的地方,那些半径具有和实轴正半轴的不同的夹角,其实就对应于实际长度的倍数和虚数单位之间的比值。

最接近这一的图像就是一个螺旋楼梯:第一级台阶(半径)的长度为一个虚数单位,第二级台阶有第一个级阶两倍那么高。因为两倍的高度,它的总长度,就相当于第一级台阶长度的两倍,但是这两倍被折叠在一起,不是使得台阶变长了,而是把台阶垫高了;第三级台阶则是把三倍第一级台阶的长度折叠了两次,成为第一级台阶高度的三倍……

在垂直地面的方向上看,台阶都一样长,只是具有和初始方向不一样的夹角,但实际上若能从侧面观看,台阶一级比一级高,呈等差数列,整个高度分四个部分,第一部分高度为1到虚数单位,第二部分为虚数单位,第三部分为,第四部分为

现在我们要求的不是别的,而是台阶构成的单位圆的周长。因为四个部分是一样的(所以才叫单位圆),我们只需要求第一个部分的长度(也就是),然后乘以4(也就是)即可。那么,我们如何求四分之一的圆周长度呢?

显然我们只知道虚数单位的大小,并没有给出周边长度的信息,但这里的结构给了我们提示。正如我们在求自然数全加和的时候,结构决定了即便无限仍然可以用无限对无限去求出确定的结果。

若要求周长,就要求出每一个半径圆心另一侧的的“端点”的长度,可是这个“端点”的长度怎么求?首先我们先看半径,对于第n层楼梯,其长度为,那么垂直它的“切点”的相对(于1的)单位长度就可以写成,


这个长度的真实单位是半径,所以实际的长度为,


可见这也是在本地消去虚数单位的影响的一种实践,这使得半径的大小和弧长的关系脱钩了。进一步来说,而若要构成切线,则需要再加上2个点,分别放在切点两侧,这样的话长度就变成了,


也就是一个切点的长度,加上两边两个单位长度。而这个切线的长度是在切向上,我们需要的长度不是在切向上,而是在径向上,于是我们还得对它取倒数(实现正交关系),求相对长度,也就是得到,


由于在加2个点的时候,我们引入的是相对关系,所以这个径向上的长度又必须依赖一个基准,而这个基准又只能是前一个点的切向长度(圆周的弧上无全局单位,只能走一步看一步),所以到当前点的长度,则需要把先前所有的相对关系都计算到里面,才能得到这个点的实际长度(第一项不是相对关系,它只能是半径本身,所以全乘部分不包括半径本身,半径必须单独乘出来),


而从所有这些点的长度的总和加上最初的基准长度也就是半径,就是四分之一圆周的长度,


现在我们把所有的长度都缩小i倍,


把项数改成无限(把数量模糊掉)就得到了纯粹的半圆周率,


把它展开,就得到,


这就是圆周率的由来。

有了这些认识,就不难理解一些问题,比如圆周率的超越性。它的结构要求它,显然是不可能出现循环的。它的精度在于“项数改成无限”的那一步,求和上限的虚数单位实际上就是求和的项数。或者说将这个四分之一圆周划分的份数,或者楼梯的阶数。随着这个阶数的增长,整个圆周的划分就越来越细。

现在让我们看看圆周率的精度和划分次数的关系,比如



如果我们发现某个圆周率的数值


那么,我们就可以说,在这个系统里面,



当然现实的情况中虚数单位不会这么小。但这给了我们一个获取本地空间虚数单位大小的方式。比如我们知道光速是一种虚数单位,它的物理数值为299792458m/s,但我们不知道米和秒之间的关系。如果我们能通过测量圆周率知道这个虚数单位的数学数值,我们就能得知米和秒之间的具体对应,就可以把米和秒彻底统一起来了。

为了说清上述圆柱到底是什么样子的,让我们求它的“体积”也就是总量。

我们知道半径,


也就是旋转楼梯的每一个台阶的长是10个单位。然后分为四个阶段,第一个阶段(第一象限)的总数,


第二个阶段(第二象限),


第三个阶段(第三象限),


第四个阶段(第四象限),


总量,


可见

这是一个极大的数字,而这只是第一个周期而已。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/909966.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Node.js回调函数以及事件循环使用介绍(基础介绍 三)

回调函数 Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 例如,我们可以…

TIDB的结构

tidb主要由三部分组成: 1、tikv tikv是tidb中存储数据的地方,以key-value格式存储,每一行对应一个key; (1)、table的key对应格式如下:tablePrefix{tableID}_recordPrefixSep{rowID},tableID是唯一的、rowID…

深度学习基础知识-编解码结构理论超详细讲解

编解码结构(Encoder-Decoder)是一种应用广泛且高效的神经网络架构,最早用于序列到序列(Seq2Seq)任务,如机器翻译、图像生成、文本生成等。随着深度学习的发展,编解码结构不断演变出多种模型变体…

【初阶数据结构】实现顺序结构二叉树->堆(附源码)

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…

CSS基础学习篇——选择器

学习文档连接:CSS层叠样式表 1.全局选择器:* * {margin: 0;padding: 0;font-size: 18px; }2.类(clss)选择器,以 . 开头 .container {display: flex;justify-content: space-around;align-items: center;width: 1200…

shodan(五)连接Mongodb数据库Jenkinsorg、net、查看waf命令

声明:学习素材来自b站up【泷羽Sec】,侵删,若阅读过程中有相关方面的不足,还请指正,本文只做相关技术分享,切莫从事违法等相关行为,本人一律不承担一切后果 引言: 1.Shodan 是一个专门用于搜索连…

探索PickleDB:Python中的轻量级数据存储利器

文章目录 探索PickleDB:Python中的轻量级数据存储利器1. 背景:为什么选择PickleDB?2. PickleDB是什么?3. 如何安装PickleDB?4. 简单的库函数使用方法创建和打开数据库设置数据获取数据删除数据保存数据库 5. 应用场景与…

高效自动化测试,引领汽车座舱新纪元——实车篇

引言 作为智能网联汽车的核心组成部分,智能座舱不仅是驾驶者与车辆互动的桥梁,更是个性化、智能化体验的源泉。实车测试作为验证智能座舱功能实现、用户体验、行车安全及法规符合性的关键环节,能够最直接地模拟真实驾驶场景,确保…

光伏无人机踏勘,照亮光伏未来!

光伏电站选址地分散在各地,想要精准获取该地的地形特点与屋顶面积等信息,传统的人工踏勘耗时耗力且精度无法保证,难以满足现代光伏项目的规模快发发展需求。光伏无人机踏勘,照亮光伏未来! 在光伏无人机智能踏勘设计系统…

uniapp数据缓存

利用uniapp做开发时,缓存数据是及其重要的,下面是同步缓存和异步缓存的使用 同步缓存 在执行同步缓存时会阻塞其他代码的执行 ① uni.setStorageSync(key, data) 设置缓存,如: uni.setStorageSync(name, 张三) ② uni.getSt…

从零开始的c++之旅——多态

1. 多态的概念 通俗来说就是多种形态。 多态分为编译时多态(静态多态)和运行时多态(动态多态)。 编译时多态主要就是我们之前提过的函数重载和函数模板,同名提高传不同的参数就可以调 用不同的函数&#xff0c…

nginx-proxy-manager实现反向代理+自动化证书(实战)

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 cnginx-proxy-manager实现反向代理自动化证书 nginx-proxy-manager是什么搭建nginx-proxy-manage…

人才画像系统:助力企业打造动态人才成长体系

在当今竞争激烈的市场环境中,人才已成为企业发展的核心竞争力。为了满足企业发展对人才的需求,人才画像系统应运而生,通过以岗位胜任力模型为基础定义人才标准,多维度采集员工信息进行人才对标和盘点,为企业的人才选拔…

【Hadoop和Hbase集群配置】3台虚拟机、jdk+hadoop+hbase下载和安装、环境配置和集群测试

目录 一、环境 二、虚拟机配置 三、 JDK、Hadoop、HBase的安装和配置 【安装和配置JDK】 【安装和配置Hadoop】 【安装和配置Hbase】 四、 Hadoop和HBase集群测试 【Hadoop启动测试】 【Hbase启动测试】 一、环境 OS: CentOS-7 JDK: v1.8.0_131 Hadoop: v2.7.6 Hb…

制作一个3D建模只需10秒:腾讯发布3D开源模型“混元3D”

混元 3D 模型 腾讯在科技领域投下一颗重磅炸弹,宣布推出混元 3D 生成大模型 “hunyuan3d - 1.0”,这是业界首个同时支持文字、图像生成 3D 的开源模型。它具有生成速度快、泛化能力强、可控性好等特点,直接引起了 AI 界众人的关注。 混元3D-1…

情怀系列国际版棋牌完整源码具备强大的多语言扩展功能,涵盖了900多款子游戏,专为全球市场的游戏开发和运营设计。

情怀棋牌源代码的服务器端使用JAVA和Node.js开发,采用RocketMQ作为消息队列中间件,有效防止服务器堵塞、消峰。数据库使用MySQL,媒体存储采用MongoDB,缓存系统使用Redis。管理后台则采用PHP语言开发。 客户端使用Cocos Creator进…

SpringBoot3集成Junit5

目录 1. 确保项目中包含相关依赖2. 配置JUnit 53. 编写测试类4、Junit5 新增特性4.1 注解4.2 断言4.3 嵌套测试4.4 总结 在Spring Boot 3中集成JUnit 5的步骤相对简单。以下是你可以按照的步骤: 1. 确保项目中包含相关依赖 首先,确保你的pom.xml文件中…

Google Guava 发布订阅模式/生产消费者模式 使用详情

目录 Guava 介绍 应用场景举例 1. 引入 Maven 依赖 2. 自定义 Event 事件类 3. 定义 EventListener 事件订阅者 4. 定义 EventBus 事件总线 5. 定义 Controller 进行测试 Guava 介绍 Guava 是一组来自 Google 的核心 Java 库,里面包括新的集合 类型&#xff08…

Idea如何推送项目到gitee

第一步:先在你的gitee创建一个仓库 第二步: 点击推送 点击定义远程,将URL换成你仓库的,填好你的用户名和密码 可以看到已经推送到仓库了