有没有办法phi在标准的python模块中获得黄金比例?我知道e并且pi在math模块中,但我可能错过了phi定义的地方.
Lyn*_*ynn 53
scipy.constants将黄金比例定义为scipy.constants.golden.它在标准库中没有定义,大概是因为很容易定义自己:
golden = (1 + 5 ** 0.5) / 2
Run Code Online (Sandbox Code Playgroud)
标准库没有。但是,由于您无论如何都要导入数学,因此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\nRun Code Online (Sandbox Code Playgroud)\n数学定义了pi和e而没有定义phi的原因可能是因为没有人要求它。
\npython数学文档说math.pi是“数学常数 \xcf\x80 = 3.141592...,达到可用精度”。但是,您可以计算 1 的反正切四倍并得到大致相同的结果:pi = 4 * math.atan(1),或pi = math.acos(-1):
>>> 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\nRun Code Online (Sandbox Code Playgroud)\n对于phi也可以这样说,它不容易获得,但您可以使用正则公式math.phi找到最接近的可用精度:phi = ( 1 + math.sqrt(5) ) / 2。
定义或提供黄金比例“捷径”的库有:
\nScipy在导入时使用标准数学包计算代数公式的静态值,这与您自己定义它是一样的(特别是对于 cpython 来说,两者都将在编译时计算):
\n>>> math.pi == math.acos(-1) == 4 * math.atan(1)\nTrue\nRun Code Online (Sandbox Code Playgroud)\nMpmath在调用时计算代数公式以达到提供的精度:
\nimport math as _math\ngolden = golden_ratio = (1 + _math.sqrt(5)) / 2\nprint(golden)\nRun Code Online (Sandbox Code Playgroud)\n最接近黄金比例定义的是sympy 的单例 GoldenRatio,它使用在调用时计算的 mpmath float (mpf):
\nimport mpmath\nprint(mpmath.mp.phi)\nRun Code Online (Sandbox Code Playgroud)\nSage Math 更进一步,允许您以多种不同的方式计算 phi。
\n