Вычисление золотого сечения с SymPy дает сложный результат - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь использовать SymPy для построения правильного пятиугольника, а затем вычислить отношение диагонали к ребру.Известно, что это золотое сечение, (1 + sqrt(5)) / 2, но SymPy неправильно его вычисляет.Ответ SymPy, после упрощения вручную, является произведением Золотого сечения и -i (отрицательная мнимая постоянная), -i * (1 + sqrt(5)) / 2

from sympy import simplify
from sympy.geometry import RegularPolygon, Point

sides = 5
polygon = RegularPolygon(Point(0, 0), 1, sides)
diagonal = polygon.vertices[0].distance(polygon.vertices[2])
print("Ratio:", simplify(diagonal/polygon.length))

Ratio: sqrt(sqrt(5) + 5)/sqrt(-sqrt(5) + 5)

Я использую SymPyпотому что мне нужно иметь точные значения и использовать пятиугольник в качестве контрольного примера, прежде чем переходить к другим полигонам.Есть ли способ убедиться, что SymPy избегает предлагать сложные решения?

1 Ответ

0 голосов
/ 30 апреля 2019

Исправлено использование nsimplify вместо упрощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...