Я пытаюсь использовать Sympy
для переупорядочения простых выражений; хотя кажется, что Sympy
отказывается сохранить результат как символическое выражение и вместо этого вычисляет логарифм численно.Простая символьная алгебра, перестраиваемая с помощью Sympy, не может символически сохранять логарифмы
Есть ли способ заставить Sympy
символически возвращать результат?
Вот минимальный рабочий пример:
import sympy as sy
sy.init_printing()
def rearrange(expression, lhs):
rhs = sy.solve(expression,lhs)[0]
return sy.Eq(lhs, rhs)
a, b = sy.symbols('a, b', real=True, positive=True)
eqn = sy.Eq(sy.exp(-a**2/b**2), 0.5)
rearrange(eqn, a)
который возвращает
a=0.832554611157698b
Это правильный ответ, конечно, хотя я бы предпочел, чтобы быть сказанным символический результат алгебра, которая (когда производятся вручную):
a = sqrt(log(2)) * b
где log является базовым e (т.е. natur al log, ln).
Как получить этот результат от Sympy, пожалуйста?