Две реализации полиномиальной инверсии - PullRequest
0 голосов
/ 28 июня 2018

Я не очень хорошо разбираюсь в математике, но кажется, что алгоритм вычисления модульного мультипликативного обратного полинома, найденный в dup_revert , кажется немного похожим на _series_inversion1 .

Пожалуйста, кто-нибудь знает, в чем разница?

1 Ответ

0 голосов
/ 28 июня 2018

Идея модуля rs_series заключается в использовании полиномиальных инструментов для эффективного манипулирования степенными рядами, поэтому неудивительно, что в нем используются аналогичные алгоритмы. Одна из причин, по которой он не просто заимствует все полиномиальные методы, состоит в том, что модуль rs_series также работает с рядами Пуизе (где экспоненты являются рациональными числами, которые не обязательно являются целыми числами). Например:

from sympy.polys.domains import QQ
from sympy.polys.rings import ring
from sympy.polys.ring_series import _series_inversion1
R, x = ring('x', QQ)
p = x**(S(2)/3) + 1
_series_inversion1(p, x, 4)  

возвращает -x**(10/3) + x**(8/3) - x**2 + x**(4/3) - x**(2/3) + 1, в отличие от

R.dup_revert(p, 4)  

В результате "TypeError: объект Rational" не может быть интерпретирован как целое число "

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