Python(NumPy)で指定した複素数の根からモニック多項式を生成する方法
NumPy の polynomial.polyfromroots() メソッドを使うと、与えられた複素数の根を持つモニック多項式(最高次の係数が 1 の多項式)を簡単に生成できます。
このメソッドは、多項式の係数を 1 次元配列として返します。すべての根が実数であれば結果も実数になりますが、複素数の根が含まれる場合は結果も複素数になります。引数 roots には、根を要素とするシーケンス(タプルやリストなど)を渡します。
たとえば、根が ±i(虚数単位)である場合、対応する多項式は (x − i)(x + i) = x² + 1 となり、係数配列は [1, 0, 1] となります。
手順
1. 必要なライブラリをインポートする
まず、NumPy の polynomial モジュールをインポートします。
from numpy.polynomial import polynomial as P
2. 複素数の根を定義して多項式を生成する
虚数単位 j を作成し、−j と j を根として polyfromroots() に渡します。
j = complex(0,1)
print("Result...\n",P.polyfromroots((-j,j)))
3. 結果のデータ型を確認する
print("\nType...\n",P.polyfromroots((-j, j)).dtype)
4. 結果の形状を確認する
print("\nShape...\n",P.polyfromroots((-j, j)).shape)
完全なサンプルコード
from numpy.polynomial import polynomial as P
# 指定した根を持つモニック多項式を生成するには、
# polynomial.polyfromroots() メソッドを使用します。
# このメソッドは多項式の係数を 1 次元配列として返します。
# すべての根が実数なら結果も実数に、
# 複素数の根が含まれれば結果も複素数になります。
j = complex(0,1)
print("Result...\n",P.polyfromroots((-j,j)))
# データ型を取得
print("\nType...\n",P.polyfromroots((-j, j)).dtype)
# 形状を取得
print("\nShape...\n",P.polyfromroots((-j, j)).shape)
実行結果
Result... [1.+0.j 0.+0.j 1.+0.j] Type... complex128 Shape... (3,)
結果の解説
出力された係数配列 [1.+0.j 0.+0.j 1.+0.j] は、多項式 x² + 1 を表しています。これは根が −i と i であるモニック多項式そのものです。
また、根に複素数が含まれているため、データ型は complex128(倍精度複素数)になっています。形状は (3,) であり、3 つの係数(x²、x、定数項)からなる 1 次元配列であることを示しています。
-
Pythonで複素数の点配列を使って指定した次数のファンデルモンド行列を生成する方法
PythonのNumPyでは、numpy.polynomial.polynomialモジュールに含まれるpolyvander()関数を使用することで、指定した次数のファンデルモンド行列(Vandermonde行列)を簡単に生成できます。この関数は、入力された点の配列に対するファンデルモンド行列を返します。戻り値となる行列の形状は x.shape + (deg + 1,) であり、最後のインデックスがxの冪乗(べきじょう)に対応します。また、データ型(dtype)は変換後のxと同じものが使用されます。polyvander()関数のパラメータa:点の配列です。要素に複素数が含まれる場合はcompl
-
Pythonで与えられた根を持つモニック多項式を生成する方法
PythonのNumPyで指定した根を持つモニック多項式(最高次の係数が1になる多項式)を生成するには、polynomial.polyfromroots()メソッドを使用します。このメソッドは、多項式の係数を1次元配列として返します。すべての根が実数の場合は出力も実数となり、虚数の根が含まれる場合は複素数となります。引数rootsには、根を要素として含むシーケンスを渡します。手順まず、必要なライブラリをインポートします。from numpy.polynomial import polynomial as Pモニック多項式を生成します。print(Result...\n,P.polyfromro