ここでは、多項式の割り算を python3 で、numpy を使って簡単に実装する方法を紹介します。
(*注意*)ここで紹介する numpy を用いて多項式の除算を行う方法は、現時点(2022年3月)で AtCoderで使用ができることを確認しています。が、これは python3 を使った場合であり、PyPy3 を選んでしまうと numpy がインポートできずに無情にも RE が返されますので、くれぐれもご注意ください。
早速ですが、以下のコードが、
3x3 + 5x2 −6x + 7 を x2 −2x + 3 で割った場合の、
商(3x + 11)と余り(7x + 26)を求めたものです。
import numpy as np
f1 = np.array([3, 5, -6, 7])
f2 = np.array([1, -2, 3])
ans = np.polydiv(f1,f2)
print(ans)
# --> (array([ 3., 11.]), array([ 7., -26.]))
上のコードから分かるように、
多項式については、各係数を列挙した配列で表現しています。
ちなみに、ある項が存在しない場合は 0 を入れます。
そして、それぞれの配列を引数にして、np.polydiv(配列1, 配列2)としてやれば、簡単に答えが返されます。
また、その答えは tuple で返され、
(商の多項式の係数を表す配列, 余りの多項式の係数を表す配列)
となっています。
お役に立てれば幸いです。