Определено ли золотое сечение в Python?

Есть ли способ получить золотое сечение phi в стандартном модуле Python? Я знаю о e и pi в модуле math, но, возможно, я где-то пропустил определение phi.


person dwitvliet    schedule 08.08.2014    source источник
comment
Да, быстрый поиск в Google показывает, что он есть у scipy: docs.scipy.org/doc /scipy/reference/constants.html   -  person user4815162342    schedule 09.08.2014
comment
Я подумал, что это хороший вопрос, потому что мне было интересно то же самое. @Банан   -  person O.rka    schedule 27.07.2015


Ответы (2)


scipy.constants определяет золотое сечение как scipy.constants.golden. Он нигде не определен в стандартной библиотеке, предположительно потому, что его легко определить самому:

golden = (1 + 5 ** 0.5) / 2
person Lynn    schedule 08.08.2014

Нет. Однако, поскольку вы все равно импортируете math, phi можно вычислить так же, как и pi:

>>> import math
>>> pi = 4 * math.atan(1)
>>> pi
3.141592653589793
>>> math.pi
3.141592653589793
>>> phi = ( 1 + math.sqrt(5) ) / 2
>>> phi
1.618033988749895

Причина, по которой math имеет значения pi и e, но не phi, может быть в том, что об этом никто не просил.


В документации python math говорится, что math.pi - математическая константа π = 3,141592 ... с доступной точностью. Однако вы можете в четыре раза вычислить арктангенс единицы и получить примерно тот же результат : pi=4*math.atan(1).

То же самое можно сказать и о phi, который не всегда доступен как math.phi, но вы можете найти ближайшую доступную точность с помощью решение квадратного уравнения x² + x -1 = 0: phi=(1+math.sqrt(5))/2.

person Iuri Guilherme    schedule 23.07.2019
comment
Формулировка этого ответа звучит так, будто ограниченная точность math.pi является ошибкой. Это не ошибка. Python внутренне использует двойники. Вот почему в документации говорится, что доступен точность. 4*math.atan(1) не даст вам лучшего приближения, потому что вы все еще используете двойные числа внизу. Да, даже если у вас есть суперкомпьютер. :) Вам не нужен суперкомпьютер, чтобы сгенерировать более 53 бит пи. - person ppm; 09.12.2019
comment
Я полагал, что изначально упоминалась как усеченная константа не результат вызова math.pi, а скорее для гамма-функции. Обновим ответ, чтобы подтвердить свою ошибку. - person Iuri Guilherme; 17.07.2020