Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで多項式を別の多項式で除算する方法 ― numpy.polydiv()の使い方

Pythonで1つの多項式を別の多項式で除算するには、numpy.polynomial.polynomial.polydiv()メソッドを使用します。このメソッドは、2つの多項式 c1 / c2 の「商と余り」を返します。

引数には係数のシーケンスを渡します。係数は低次の項から高次の項へと順に並べます。たとえば、[1, 2, 3] は 1 + 2*x + 3*x**2 を表します。

戻り値は、商と余りをそれぞれ表す係数列の配列です。パラメータ c1 および c2 は、「標準」基底に対する多項式を表す1次元の係数配列であり、こちらも低次の項から高次の項へと順に並べます。

なお、numpy.polynomial.polynomial モジュールには、多項式を扱うための便利なオブジェクトが多数用意されています。通常の算術演算をカプセル化した Polynomial クラスもそのひとつです。

手順

1. 必要なライブラリをインポートする

まず、必要なライブラリをインポートします。

from numpy.polynomial import polynomial as P

2. 2つの多項式を宣言する

p1 = (4,1,6)
p2 = (2,5,3)

3. 多項式を表示する

print("Polynomial 1...\n",p1)
print("\nPolynomial 2...\n",p2)

4. polydiv()メソッドで除算する

1つの多項式を別の多項式で除算するには、numpy.polynomial.polynomial.polydiv() メソッドを使用します。

mulRes = P.polydiv(p1,p2);
print("\nResult (divide)...\n",mulRes)

サンプルコード

from numpy.polynomial import polynomial as P

# 2つの多項式を宣言
p1 = (4,1,6)
p2 = (2,5,3)

# 多項式を表示
print("Polynomial 1...\n",p1)
print("\nPolynomial 2...\n",p2)

# polydiv()メソッドで多項式を除算
mulRes = P.polydiv(p1,p2);
print("\nResult (divide)...\n",mulRes)

出力結果

Polynomial 1...
(4, 1, 6)

Polynomial 2...
(2, 5, 3)

Result (divide)...
(array([2.]), array([ 0., -9.]))

このように、polydiv() メソッドを使えば、多項式の除算結果として商(quotient)と余り(remainder)を簡単に取得できます。上記の例では、商が array([2.])、余りが array([0., -9.]) となっています。

  1. Pythonで文字列sを別の文字列tに変換できるか判定する方法

    2つの文字列 s と t が与えられ、t はすべて大文字であるとします。次の操作を繰り返すことで、s を t に変換できるかどうかを判定する問題を考えてみましょう。一部の小文字を大文字に変換する。すべての小文字を削除する。たとえば、入力が s = fanToM、t = TOM の場合、出力は True になります。o を O に変換し、残りの小文字をすべて削除すれば t と一致するためです。解法のアプローチこの問題は動的計画法(DP)を使って効率的に解けます。dp[i][j] を「s の先頭 i 文字を使って、t の先頭 j 文字を作れるかどうか」を表す真偽値として定義します。具体的な手順は以

  2. Pythonで文字列を別の文字列に追加(連結)する2つの方法

    Pythonにおいて「文字列を追加する」というのは、複数の文字列をつなぎ合わせて新しい文字列を作ること(連結)を意味します。テキスト解析など、さまざまな場面で活用される基本的な操作です。この記事では、ある文字列を別の文字列に追加するための代表的な2つの方法を、サンプルコードと実行結果とともに解説します。方法1:+= 演算子を使う+ 演算子は、数値に対して使う場合と同じように文字列にも使用できます。ただし、文字列の場合は数値の加算ではなく連結が行われる点が異なります。コード例s1 = What a beautiful s2 = flower print(与えられた文字列 s1 :, s1)