SymPy полиномиальное деление возвращает неожиданный результат

#python #sympy #symbolic-math

#python #sympy #символический-математика

Вопрос:

 >>> from sympy import *
>>> var('x a')
(x, a)
>>> div(x**3 a*x*2-5*x 6,x-3)
(2*a   x**2   3*x   4, 6*a   18)
 

Я мало что могу вам сказать, за исключением того, что я ожидал, что это даст мне остаток от 9 * a 18.

Чего мне не хватает? Что я должен был сделать?

Комментарии:

1. Результат кажется правильным. Почему вы ожидаете 9*a вместо 6*a ? simplify((2*a x**2 3*x 4)*(x-3) 6*a 18-(x**3 a*x*2-5*x 6))==0 дает True .

2. @Georgy: Озадачивает. Остаток должен быть равен нулю, чтобы x-3 было фактором. 9 * a 18 = 0 дает ‘a’, который работает, остаток, предоставляемый функцией div, не работает.

3. Я не уверен, что понимаю, почему это не работает. 6*a 18=0 дает a=-3 . Для этого a частное будет равно x**2 3*x-2 , и если мы умножим его на x-3 , мы получим x**3*-11*x 6 , что равно исходному дивиденду с a заменой на -3 . Если мы выполним ту же проверку a=-2 , они не будут совпадать.