如何精确计算 π ?

如何精确计算 π ?

01

原本是要回顾一下第六章内容,也就是“间隔性重复”。但我已经迫不及待,想要知道如何精确计算 π ,因此,我们快走一步,来探讨一下 π 的计算。

对于 π 的计算,我从学校时学到之后,就一直有一个疑问,说计算机可以把 π 计算到小数点后 10 亿位,100 亿位,到底是怎么计算的?

肯定不是用祖冲之或刘徽的那种算法。

我的意思是说,肯定不可能是用物理测量的方法,而一定是有一个数学的精确公式。

当然,这里所说的精确,是指一种确定性,而不是真正的某个数。现在我们已经具备了所有的条件,就看怎么来设计这个计算公式了。

02

当然, π 既然与圆周长及圆面积相关,我们还是应该从这两个概念入手。

首先,我们知道,半径为 r 的圆面积是

A(r) = πr2

因此,如果圆的半径为 1 ,那么面积则为 π 。

而我们可以将圆视为一条封闭的弯曲线条,曲线的面积计算,我们在前面已经探讨了,这里我们看是否能用上,以及如何运用。

其次,我们又探讨了曲线长度的计算,与此相对应,是圆周长的计算,而我们知道半径为 r 的圆,周长是

L(r) = 2πr

同样,半径 r=1 ,那么周长为 2π 。

然后呢?

由于我们讨论的微分与积分,均与函数相关,我们于是可以将 A(r) 与 L(r) 都看成是函数。又因为当 r = 1 时,就可以得到纯粹的 π ,那么,我们可以将这两个函数看成是 A(1) 与 L(1) 。即

A(1) = π

L(1) = 2π

然后呢?

好像毫无头绪。

老办法,我们再回过头去看看走过的老路,看能不能绕到老路上去。

03

如果有一种函数,当 x=1 时,m(x)= π 呢?

当然会有,比如

m(x)= πx

或者

m(x)= πx

这两种函数在 x=1 时,m(x)= π 。

但我们知道, m(x)= πx 其实是以 π 为斜率的直线,显然不是。

m(x)= πx

是不是呢?

也不好说。

这是一个指数函数,我们前面讨论过,我们还知道指数函数有一个特殊的数 e , f(x)=ex ,其导数就是其本身,即

(ex)'=ex

而且,我们还通过泰勒级数,计算出了 e 大约等于 2.71828。

那么,我们可不可以利用泰勒级数,像计算 e 一样,计算出 π 呢?

可以试试。

04

使用泰勒级数之前,从哪里开始呢?

我们应该想到,曲线的面积与长度,均与积分相关,而积分,又与反导数相关。

那么,我们在考察 A(1) 与 L(1) 函数,输入 1 ,输出 π 的同时,是不是应该思考有没有什么函数,输入 π 而输出 1 呢?

有的。或者说,有相似的函数。

那就是正弦函数 f(x)=sin(x) 。

我们前面在探讨正弦函数的时候,其实是以半径为 1 的圆来考察的,这与我们本篇文章的设定恰好完全一致。

我们也知道了,如果以圆周长来定义角度,那么

sin(π/2)=1

即输入 π/2,输出 1 。符合我们的设想。

也就是说,现在我们想要有两种函数,一种函数是输入 1 ,输出 π ;一种函数是输入 π ,输出 1 。我们设前一种函数为 ∧ ,后一种函数为 ∨ ,没有别的意思,仅仅是因为 ∧ 与 ∨ 这两个符号看起来相反。我们命名为 qp ,或者 db 也行。

那么,我们希望得到的两种函数,二者关系如下:

∧(∨(x))=x

或者

∨(∧(x))=x

我们让 ∨(x) 就是 sin(x) ,即

∨(π/2)=1

那么

∧(1)=π/2

π= 2·∧(1)

我们再让 A(x)= ∧(∨(x)) ,其实也就是 A(x)=x 。

很显然,A(x)= x 是斜率为 1 的直线,即

A'(x)=dA/dx

=1

把 A(x)= ∧(∨(x)) 代入,即

1= dA(x)/dx

= d∧(∨(x))/dx

= [d∧(∨(x))/d∨]·[d∨/dx]

这是什么东西啊?

完全没有头绪啊。

不过,前面我们已经令 ∨(x) = sin(x) ,而我们也在三角函数的导数(数学学习 030)中,知道 sin(x) 的导数为 cos(x) 。即

d∨/dx = cos(x)

我们设 H(x)= cos(x) 吧,那么

1=H(x)·[d∧(∨(x))/d∨]

好像也没有什么头绪,我们还有 d∧(∨(x))/d∨不知道是什么东西。

怎么办呢?

05

我们还是从 d∧(∨(x))/d∨入手。

[d∧(∨(x))/d∨] 似乎可以简写为

d∧(∨)/d∨

内涵没变,只是看起来简单一点,即

1=H(x)·[d∧(∨)/d∨] (1)

变一下形

d∧(∨)/d∨=1/H(x)

这里的 H(x) 显得很突兀,我们还是把 H(x) 改为用 ∨(x) 来表示吧。

怎么改呢?

我们知道,根据毕达哥拉斯定理

[sin(x)]2+[cos(x)]2=1

那么

cos(x)=[1-(sin(x))2]1/2

d∧(∨)/d∨=1/[1-∨2]1/2

我们令 ∨=x ,那么

不过,经过几次的变换之后,这个公式当中的 x ,还是那个变量吗?会不会变成了一个“约束变量”?

我们可以检验一下。

06

所谓检验,可以是我们试着用另外一种途径来运算,看会不会得出同样的结果。

前面,我们的出发点是 A(x)= ∧(∨(x)) ,即 A(x)=x ,即 A(x) 的导数为 1 。那么,我们这次的出发点改为 A(x)= ∨(∧(x)) ,还是 A(x)=x ,导数为 1 。

1=[dA(x)]/dx

因为 A(x)= ∨(∧(x)) ,即

1=[d∨(∧(x))]/dx

= [d∨(∧(x))]/dx·[d∧(x)/d∧(x)]

= [d∧(x)/dx]·[d∨(∧(x))]/d∧(x)

简化一下,即

1=[d∧/dx]·[d∨(∧)]/d∧

其中

[d∨(∧)]/d∧,其实就是前面说过的 H(∧),即

1=[d∧/dx]·H(∧)

同样,我们用 ∨(∧) 来表示 H(∧) 。即

H(∧)=[1-(∨(∧))2]1/2

那么

1=[d∧/dx]·[1-(∨(∧))2]1/2

变形

d∧/dx= 1/[1-(∨(∧))2]1/2

∨(∧)=∨(∧(x))

= x

d∧/dx= 1/[1-x2]1/2

Perfect 。

07

不过,我们做到现在,似乎越走越远了,都忘了一开始我们是为了什么出发。

我们回头看看,这个 ∧是什么?

哦,原来是圆的面积函数 A(x) ,其中 x 就是圆的半径。而且,我们也知道了,如果圆的半径为 1 ,那么

A(1)=π

不过,为了与 V(x) 统一,我们最后计算出 π=2 ∧(1) 。

既然 ∧(x) 就是圆的面积函数,那么对其求导之后的 d∧/dx 不就是相当于积分中的 m(x) 吗?也就是

我们可以让 b=1 ,不就是 ∧(1) 吗?而且,我们也可以把 d∧/dx= 1/[1-x2]1/2 代入这个公式,即

嗯, ∧(1) 有了,后面这个 ∧(a) 有点讨嫌,能够去掉吗?

我们让 a=0 试试。

因为 V(x)=sin(x),所以 V(0)=0 ,而 A(V(0))=0 即 A(0)=0 。那么

啊哈,我们将 π=2 ∧(1) 代进去,π 的表达式就是

这个根号好像有一点讨嫌,能不能去掉呢?

08

我们记得三角函数中,正切的导数有一个 T2 ,没有根号。我们将 Tan(x) 简化为 T(x) ,即

T'(x)=1+T2

能不能用 tan 解决上述根号问题呢?

首先用 sin(x) 即 V(x) 和 cos(x) 即 H(x) 来表示 T(x) ,即

T(x)= V(x)/H(x)

我们知道,当 x = π/4 时,V=H ,即

T(π/4)= 1

我们设 ⊥(x) 是 T(x) 的反函数,也就是

⊥(T(x))=x

T(⊥(x))=x

因为T(π/4)= 1,那么

⊥(1)=⊥(T(π/4))

=π/4

变形

π= 4 ·⊥(1)

我们之前已经假设了 A(x)=x ,而⊥(T(x))=x ,因此

A(x)=⊥(T(x))

求导

1= dA/dx

= d⊥(T(x))/dx

= d⊥(T(x))/dx·dT(x)/dT(x)

=[dT/dx]·[d⊥(T)]/dT

而 dT/dx = 1+ T2

代入

d⊥(T)/dT=1/(1+ T2)

由于全部是 T ,因此 T 可以用 x 表示,即

d⊥(x)/dx=1/(1+ x2)

同样,求积分

令 a=0 ,b=1 ,结合 π= 4 ·⊥(1) 我们可以得到 π 的表达式

嗯,这感觉好一点。

现在可不可以使用泰勒级数了呢?

我们试试,为了简化,我们可以先令 s=x2 ,即令

m(s)=(1+s)-1

那么

m'(s)=(-1)·(1+s)-2

m''(s)=(-1)·(-2)·(1+s)-3

……

m(n)(s)=(-1)·(-2)·…·(-n)(1+s)-n-1

m(n)(0)=(-1)·(-2)·…·(-n)

=(-1)n·n!

好,现在开始用泰勒级数,即

将 s 换回 x2 ,即

代入 π 的表达式

新的 π 的表达式为

好像有点麻烦,好复杂,换一种形式

我们再利用积分公式

将 π 的表达式改为

其实也可以表述为

09

这就好办了,我们交给计算机来计算。

当 n=100,000 时

π =3.141 60

当 n=1,000,000 时

π=3.141 59

因此,我们可以根据计算机的计算能力,不断地扩大 π 小数点后的位数。

随着科技的不断进步和发展,截止到2021年8月17日,瑞士的研究人员使用了一台超级计算机,经历了108天,精准地将圆周率 π 计算到了小数点后的62.8万亿位。


请大家在此基础上自己编辑html求π代码,然后放在评论区,互相在评论区学习!
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础学习(5)流程控制

文章目录 一. 程序三大执行流程二. 分支结构1.单分支结构(if)2.双分支结构(if..else)3.多分支结构(if..elif..else) 二,缩进(tab键)三,循环结构1.while循环2.for循环①遍历字典 五.break,continue和pass语句1.break,continue2.pass Python基础学习(1)基本…

蓝桥杯(日期问题纯暴力)

纯纯暴力&#xff0c;写的想吐&#xff0c;玛德服了。 但是复习了vector去重方法&#xff0c;日期的合法性判断。 #include <iostream> #include <vector> #include <cstring> #include <algorithm>using namespace std; vector<int> res; st…

浪潮信息数据中心管理平台InManage升级发布 新增三大场景功能

在AIGC应用日益广泛的当下&#xff0c;浪潮信息聚焦AIGC在数据中心运维管理中面临的难题&#xff0c;进一步通过技术创新升级功能及体验&#xff0c;为AIGC的高效应用创造了良好的基础。近日&#xff0c;浪潮信息数据中心管理平台InManage升级发布&#xff0c;新增资产数字化管…

强化学习(一)

#! https://zhuanlan.zhihu.com/p/686235471 深度强化学习&#xff08;一&#xff09;&#xff08;基础概念&#xff09; 一.马尔可夫决策过程 Agent:智能体&#xff0c;动作或决策对象 Environment: 与智能体交互的对象&#xff0c;可随时间变化 State&#xff1a;对某一…

智慧城市的未来:利用数字孪生技术推动智慧城市的智能化升级

目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、城市规划与建设 2、城市管理与运营 3、公共服务与民生改善 4、应急管理与灾害防控 四、数字孪生技术推动智慧城市的智能化升级的价值 1、提高城市管理的智能化水平 2、优化城市资源配置 …

Allegro许可与其他软件的兼容性优势

解锁企业软件管理新篇章&#xff0c;Allegro许可与其他软件的兼容性优势 在数字化经济的时代&#xff0c;企业越来越依赖于各种软件应用来提升运营效率和管理水平。然而&#xff0c;企业在选择和使用软件时&#xff0c;经常会遇到与其他软件不兼容的问题&#xff0c;导致数据无…

答题pk小程序源码技术大解析

答题pk小程序源码解析 在数字化时代&#xff0c;小程序因其便捷性、即用性而受到广泛欢迎。其中&#xff0c;答题pk小程序更是成为了一种寓教于乐的现象。它不仅为用户提供了趣味性的知识竞技平台&#xff0c;还为企业、教育机构等提供了互动营销和知识传播的新途径。本文将对…

2024年品牌推广:构建品牌生态圈与注重品牌故事和文化传播

在全球经济深度融合、数字化浪潮汹涌澎湃的2024年&#xff0c;品牌推广的策略与模式正经历着前所未有的变革。在这一背景下&#xff0c;构建品牌生态圈和注重品牌故事与文化传播&#xff0c;成为了企业提升品牌竞争力和市场占有率的重要手段。 一、2024年市场经济分析与现状 …

CDA-LevelⅡ【考题整理-带答案】

关于相关分析中应注意的问题&#xff0c;下面说法错误的是&#xff1a;B 如果两变量间的相关系数为0&#xff0c;则说明二者独立 。解释&#xff1a;只能说明两者不存在线性相关关系现通过参数估计得到一个一元线性回归模型为y3x4&#xff0c;在回归系数检验中下列说法错误的是…

遥感与ChatGPT:科研中的强强联合

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已逐渐渗透到各个领域&#xff0c;为传统行业带来了前所未有的变革。其中&#xff0c;遥感技术作为观测和解析地球的重要手段&#xff0c;正逐渐与AI技术相结合&#xff0c;为地球科学研究与应用提供了全新的…

软件设计模式:模板方法模式

1. 简介 模板方法模式是一种行为型设计模式&#xff0c;它定义了一个算法的骨架&#xff0c;将一些步骤延迟到子类中实现。这样&#xff0c;可以在不改变算法结构的情况下&#xff0c;重新定义算法中的某些步骤。 2. 使用条件 模板方法模式适用于以下情况&#xff1a; 算法…

【elasticsearch】ES的JAVA工具类完整版(待完成...)

springboot 的 elasticsearch 版本: 7.15.2 前情提要: 1.首先要理解 elasticsearch 对于【数据类型】很严格,如果字段类型不规范,在 检索/排序/聚合 时候类型不正确就会出现报错或者查不到数据的问题。所以在一般String类型插入结构如下: 这样的结构,不仅可以支持分词查…

【力扣晒题练习】232. 用栈实现队列

题目描述&#xff1a; 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素…

基于SpringBoot的招聘网站

基于jspmysqlSpring的SpringBoot招聘网站项目&#xff08;完整源码sql&#xff09; 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》…

Elastic Stack--03--索引操作、文档操作、_cat

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1._cat/_cat/indices?v 查看所有的索引信息 2.索引操作索引就相当于我们讲的关系型数据库MySQL中的 database 2.1 创建索引PUT /索引名 2.2 查看索引信息GET /索引…

Java 容器启动执行指定任务

1、实现CommandLineRunner接口 实现CommandLineRunner接口&#xff0c;注意做初始化任务的类需要放在扫描路径下&#xff0c;使用Component注入到spring容器中。 import com.zw.service.StudentService; import org.springframework.beans.factory.annotation.Autowired; impo…

系统学习c++类和对象——深度理解默认成员函数

前言&#xff1a;类和对象是面向对象语言的重要概念。 c身为一门既面向过程&#xff0c;又面向对象的语言。 想要学习c&#xff0c; 首先同样要先了解类和对象。 本节就类和对象的几种构造函数相关内容进行深入的讲解。 目录 类和对象的基本概念 封装 类域和类体 访问限定符…

【Java设计模式】九、桥接模式

文章目录 0、背景1、模式2、案例3、使用场景 0、背景 现要创建不同的图形&#xff0c;图形的形状有圆、长方形、正方形&#xff0c;且它们有不同的颜色 两个维度在变&#xff0c;使用类的继承可以实现&#xff0c;也符合开闭原则&#xff0c;但会类爆炸。 1、模式 将抽象与…

BUG:Enigma Virtual Box打包.net独立程序不正常

专栏介绍与文章目录-CSDN博客 尝试了使用Enigma Virtual Box打包.net8的winform程序&#xff0c;程序发布为不依赖框架的单一文件&#xff08;设置了压缩&#xff09;&#xff0c;再和另外几个文件打包成一个exe&#xff08;另外的文件不影响.net程序打开&#xff09;。 但是打…

Vue中的组件:构建现代Web应用的基石

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…