Если вы проверите свой результат, вы обнаружите, что он совпадает с исходным уравнением, поэтому ответ правильный:
>>> eq = -x + factor(2 * (x - 1))
>>> integrate(eq).diff()
x - 2
>>> eq.expand()
x - 2
Это означает, что полученный вами результат отличается от ожидаемого результата на постоянную и такие случаи считаются правильными с точки зрения неопределенной интеграции.
Похоже, вы уже узнали об автоматическом расширении (таким образом, использование factor
для предотвращения распределения 2). Однако вы можете не осознавать, что после того, как вы передаете выражение подпрограмме, вам не нужно сохранять выражение в факторизованной форме. Похоже, вы ожидали, что x - 1
будет рассматриваться как x
. Мы можем смоделировать это как
>>> integrate(-x)+integrate(2*y).subs(y,x-1)
-x**2/2 + (x - 1)**2
Использование y
для представления x - 1
нормально в этом случае, так как результаты отличаются только на константу:
>>> (integrate(x-1) - integrate(y).subs(y ,x-1)).is_constant()
True
Это не будет, однако, быть верным для всех функций x
.