Как я могу запретить sympy вводить мнимые числа?

#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 Я имел в виду первый пример, но я думаю, что этот комментарий сбил с толку, поэтому я удалил его.