2016-02-15 8 views
2

Я нашел проблему с Sympy, которую я не могу понять.Сравнение результатов коэффициента Sympy false

Почему это вернуть ложь ...

factor(81*q + 90) == 9*(9*q + 10) 

... в то время как это возвращает истину?

factor(q**2-64) == (q+8)*(q-8) 

Когда я печатаю

factor(81*q + 90) 

выход именно это выражение

9*(9*q + 10) 

Итак, почему не SymPy рассмотреть мое первое сравнение верно?

ответ

1

SymPy автоматически распространяет number*addition, как 9*(9*q + 10) в 81*q + 90. factor использует трюк, чтобы предотвратить это автоматическое упрощение (в основном, Mul(9, 9*q + 10, evaluate=False)).

Это удаление должно быть произведено open issue, но это решение еще не реализовано.

+0

Благодарим за помощь. Есть ли у вас идеология о том, как я могу проверить, полностью ли учтен ли входная строка или нет? – user2905179

+0

Я думаю, что единственный способ проверить, является ли 'factor (expr) == expr'. – asmeurer

+0

Да, но это не работает в таких случаях: 'factor (81 * q + 90) == 9 * (9 * q + 10)' – user2905179