SymPy упрощает, не пытается факторинга - PullRequest
0 голосов
/ 09 сентября 2018

Есть ли обходной путь для очевидной неспособности SymPy упростить sqrt (x ** 2 + 2 * x + 1)?

from sympy import *
x = Symbol('x', real=True, positive=True)
simplify(sqrt(x**2))  # returns x
simplify(sqrt(x**2+2*x+1)) #fails to return x+1

1 Ответ

0 голосов
/ 09 сентября 2018

SymPy не пытается упростить все на месте, слишком много проблем (начиная с производительности), если он это сделал. См. Статью Автоматическое упрощение в вики SymPy.

Если вы хотите выделить выражение, вы должны сказать SymPy сделать это.

factor(sqrt(x**2+2*x+1))   # returns x+1

Формула sqrt(x**2) становится x, потому что (x**a)**b можно смело комбинировать с x**(a*b), когда база положительна, а показатели действительны. (Даже в этом случае «может» не всегда означает «должно быть». В SymPy присутствует некоторая степень автоматического упрощения, возможно, слишком много.)

Ключевое различие между ними заключается в том, что x**2 является явной степенью, тогда как x**2 + 2*x + 1 является суммой.

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