Pythonで複素数の根からルジャンドル級数を生成する方法
Pythonでルジャンドル級数(Legendre series)を生成するには、numpy.polynomial.legendreモジュールのlegfromroots()メソッドを使用します。このメソッドは、指定した根(roots)を持つ多項式をルジャンドル基底の級数に変換し、その係数を1次元配列として返します。
注意すべき点として、すべての根が実数であれば結果は実数配列になりますが、根の一部が複素数の場合は、たとえ計算結果の係数がすべて実数であっても、出力は複素数型(complex)になります。引数rootsには、根を要素とするシーケンス(リストやタプルなど)を渡します。
実行手順
まず、必要なライブラリをインポートします。
from numpy.polynomial import legendre as L
次に、legfromroots()メソッドを使って、虚数単位 j と -j を根とするルジャンドル級数を生成します。
j = complex(0,1)
print("Result...\n",L.legfromroots((-j, j)))続いて、結果のデータ型を確認します。
print("\nType...\n",L.legfromroots((-j, j)).dtype)最後に、結果の形状(shape)を確認します。
print("\nShape...\n",L.legfromroots((-j, j)).shape)サンプルコード全体
from numpy.polynomial import legendre as L
# ルジャンドル級数を生成するには polynomial.legendre.legfromroots() メソッドを使用
j = complex(0,1)
print("Result...\n",L.legfromroots((-j, j)))
# データ型を取得
print("\nType...\n",L.legfromroots((-j, j)).dtype)
# 形状を取得
print("\nShape...\n",L.legfromroots((-j, j)).shape)実行結果
Result...
[1.33333333+0.j 0. +0.j 0.66666667+0.j]
Type...
complex128
Shape...
(3,)結果の解説
根が ±j の場合、対応する多項式は x² + 1 です。これをルジャンドル多項式の基底で表現すると、P₂(x) = (3x² − 1)/2 の関係から x² = (2/3)P₂(x) + (1/3)P₀(x) となるため、x² + 1 = (4/3)P₀(x) + (2/3)P₂(x) となります。
実際の出力 [1.33333333, 0., 0.66666667] は、それぞれ P₀、P₁、P₂ の係数に対応しており、理論値(4/3 ≒ 1.33333333、2/3 ≒ 0.66666667)と一致しています。
また、根に複素数が含まれているため、係数の値自体は実数ですが、データ型は complex128 になっている点にも注目してください。配列の形状は係数3個分の (3,) です。
-
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