为什么定义PI = 4 * ATAN(1)
将PI定义为什么的动机是什么?
PI = 4.D0 * DATAN(1.D0)
在Fortran 77代码中? 我明白它是如何工作的,但是,推理是什么?
这种风格确保在为PI分配值时使用在任何体系结构上可用的最大精度。
因为Fortran没有PI
的内置常量。 但是,不要手动input数字,也不可能在给定的实现中获得最大可能的精度,让图书馆为你计算结果,保证这些不利因素都不会发生。
这些是相同的,你有时也会看到它们:
PI=DACOS(-1.D0) PI=2.D0*DASIN(1.D0)
我相信这是因为这是pi上最短的一个系列。 这也意味着这是最准确的。
格雷戈里 – 莱布尼兹系列(4/1 – 4/3 + 4/5 – 4/7 …)等于pi。
atan(x)= x ^ 1/1 – x ^ 3/3 + x ^ 5/5 – x ^ 7/7 …
所以,atan(1)= 1/1 – 1/3 + 1/5 – 1/7 + 1/9 … 4 * atan(1)= 4/1 – 4/3 + 4/5 – 7 + 4/9 …
这等于格雷戈里 – 莱布尼兹系列,因此等于pi,约为3.1415926535 8979323846 2643383279 5028841971 69399373510。
另一种使用atan并findpi的方法是:
pi = 16 * atan(1/5) – 4 * atan(1/239),但我认为这更复杂。
我希望这有帮助!
(说实话,我认为Gregory-Leibniz系列是基于atan而不是基于Gregory-Leibniz系列的4 * atan(1),换句话说,REALcertificate是:
如果x =π/ 4弧度,sin ^ 2 x = cos ^ 2 x或sin ^ 2 x = cos ^ 2 x = 1/2。
那么,sin x = cos x = 1 /(root 2)。 tan x(sin x / cos x)= 1,atan x(1 / tan x)= 1。
所以如果atan(x)= 1,x = pi / 4,atan(1)= pi / 4。 最后,4 * atan(1)= pi。)
请不要给我评论 – 我还是一个青less年。
这是因为这是精确计算pi
的精确方法。 你可以简单地继续执行该函数来获得更大和更高的精度,并在任何点停止近似。
相比之下,将pi
指定为一个常数,可以提供与原来一样精确的精度,这对于高度科学或math应用(Fortran经常使用)来说可能并不合适。
这听起来像是一个编译器错误的解决方法。 或者可能是这个特定的程序依赖于该身份是确切的,所以程序员保证。