是用Python定义的黄金比例吗?

Ban*_*ana 30 python math

有没有办法phi在标准的python模块中获得黄金比例?我知道e并且pimath模块中,但我可能错过了phi定义的地方.

Lyn*_*ynn 53

scipy.constants将黄金比例定义为scipy.constants.golden.它在标准库中没有定义,大概是因为很容易定义自己:

golden = (1 + 5 ** 0.5) / 2
Run Code Online (Sandbox Code Playgroud)


Iur*_*rme 5

标准库没有。但是,由于您无论如何都要导入数学,因此phi可能会以相同的方式计算计算方式可能与计算pi 的

\n
>>> import math\n>>> pi = 4 * math.atan(1)\n>>> pi\n3.141592653589793\n>>> pi = math.acos(-1)\n>>> pi\n3.141592653589793\n>>> math.pi\n3.141592653589793\n>>> phi = ( 1 + math.sqrt(5) ) / 2\n>>> phi\n1.618033988749895\n
Run Code Online (Sandbox Code Playgroud)\n

数学定义了pie而没有定义phi的原因可能是因为没有人要求它。

\n
\n

python数学文档说math.pi是“数学常数 \xcf\x80 = 3.141592...,达到可用精度”。但是,您可以计算 1 的反正切四倍并得到大致相同的结果pi = 4 * math.atan(1),或pi = math.acos(-1)

\n
>>> import math\n>>> pi = 4 * math.atan(1)\n>>> pi\n3.141592653589793\n>>> pi = math.acos(-1)\n>>> pi\n3.141592653589793\n>>> math.pi\n3.141592653589793\n>>> phi = ( 1 + math.sqrt(5) ) / 2\n>>> phi\n1.618033988749895\n
Run Code Online (Sandbox Code Playgroud)\n

对于phi也可以这样说,它不容易获得,但您可以使用正则公式math.phi找到最接近的可用精度:phi = ( 1 + math.sqrt(5) ) / 2

\n
\n

定义或提供黄金比例“捷径”的库有:

\n

西皮

\n

Scipy在导入时使用标准数学包计算代数公式的静态值,这与您自己定义它是一样的(特别是对于 cpython 来说,两者都将在编译时计算):

\n
>>> math.pi == math.acos(-1) == 4 * math.atan(1)\nTrue\n
Run Code Online (Sandbox Code Playgroud)\n

数学数学

\n

Mpmath在调用时计算代数公式以达到提供的精度

\n
import math as _math\ngolden = golden_ratio = (1 + _math.sqrt(5)) / 2\nprint(golden)\n
Run Code Online (Sandbox Code Playgroud)\n

辛皮

\n

最接近黄金比例定义的是sympy 的单例 GoldenRatio,它使用在调用时计算的 mpmath float (mpf):

\n
import mpmath\nprint(mpmath.mp.phi)\n
Run Code Online (Sandbox Code Playgroud)\n

智者

\n

Sage Math 更进一步,允许您以多种不同的方式计算 phi

\n

  • 这个答案的措辞听起来好像 math.pi 的有限精度是一个错误。这不是一个错误。[Python 在内部使用双精度。](https://docs.python.org/3/tutorial/floatingpoint.html#representation-error) 这就是文档说“达到可用精度”的原因。`4*math.atan(1)` 不会给你一个“更好的近似值”,因为你仍然在下面使用双精度数。是的,即使“如果你有一台超级计算机”。:) 你不需要超级计算机来生成超过 53 位的 pi。 (2认同)