#python #sympy #symbolic-math
#python #sympy #символьная математика
Вопрос:
Я использую sympy для выполнения символьной интеграции:
var("x", real = True)
var("a", real = True, negative = True)
integrate(exp(a * x**2), (x, -oo, oo))
> I*sqrt(pi)/sqrt(a)
Вместо этого я ожидал получить sqrt(pi)/sqrt(-a)
. Почему вводятся мнимые числа и как я могу это предотвратить? Учитывая, что это a
отрицательно, я считаю sqrt(-a)
предпочтительнее I/sqrt(a)
.
Я копнул дальше и нашел следующее:
var("x", real = True)
var("a", real = True, negative = True)
sqrt(pi / a)
> sqrt(pi)*(I/sqrt(-a))
Я нашел это еще более загадочным, ожидая, что выражение sqrt(pi / a)
останется неизменным, поскольку не происходит упрощения или другой сложной операции. Почему это происходит?
Почему вводятся мнимые числа? Есть ли способ принудительно использовать действительные числа во время вычислений?
Комментарии:
1. Вы говорите «даже если все выражения реальны», но
sqrt(a)
это не реально.2. @OscarBenjamin Я имел в виду первый пример, но я думаю, что этот комментарий сбил с толку, поэтому я удалил его.