【Python】NumPyでルジャンドル多項式の係数配列からスケーリング済みコンパニオン行列を返す方法
ルジャンドル多項式の係数を格納した1次元配列から、スケーリングされたコンパニオン行列を返すには、PythonのNumPyが提供する legendre.legcompanion() メソッドを使用します。ルジャンドル多項式の通常のコンパニオン行列は、c がルジャンドル多項式の基底となっている場合にはすでに対称行列であるため、特別なスケーリングは適用されません。
このメソッドは、(deg, deg) のサイズを持つスケーリング済みコンパニオン行列を返します。引数 c には、低次から高次の順に並べたルジャンドル級数の係数を含む1次元配列を指定します。
実行手順
まず、必要なライブラリをインポートします。
import numpy as np from numpy.polynomial import legendre as L
続いて、係数の1次元配列を作成します。
c = np.array([1, 2, 3, 4, 5])
作成した配列を表示します。
print("Our Array...\n",c)
配列の次元数を確認します。
print("\nDimensions of our Array...\n",c.ndim)
配列のデータ型を取得します。
print("\nDatatype of our Array object...\n",c.dtype)
配列の形状を取得します。
print("\nShape of our Array object...\n",c.shape)
ルジャンドル多項式の係数の1次元配列からスケーリングされたコンパニオン行列を返すには、NumPy の legendre.legcompanion() メソッドを使用します。ルジャンドル多項式の場合、通常のコンパニオン行列はすでに対称行列となっているため、追加のスケーリングは行われません。
print("\nResult...\n",L.legcompanion(c))
完全なコード例
import numpy as np
from numpy.polynomial import legendre as L
# 係数の1次元配列を作成
c = np.array([1, 2, 3, 4, 5])
# 配列を表示
print("Our Array...\n",c)
# 次元数を確認
print("\nDimensions of our Array...\n",c.ndim)
# データ型を取得
print("\nDatatype of our Array object...\n",c.dtype)
# 形状を取得
print("\nShape of our Array object...\n",c.shape)
# スケーリングされたコンパニオン行列を返す
print("\nResult...\n",L.legcompanion(c))
出力結果
Our Array...
[1 2 3 4 5]
Dimensions of our Array...
1
Datatype of our Array object...
int64
Shape of our Array object...
(5,)
Result...
[[ 0. 0.57735027 0. -0.30237158]
[ 0.57735027 0. 0.51639778 -0.34914862]
[ 0. 0.51639778 0. 0.10141851]
[ 0. 0. 0.50709255 -0.45714286]]
このように、legcompanion() を呼び出すだけで、指定した係数配列に対応する (deg, deg) サイズのスケーリング済みコンパニオン行列を簡単に取得できます。コンパニオン行列の固有値は元の多項式の根(零点)と一致するため、ルジャンドル多項式の求根や数値計算への応用にも役立ちます。
-
Python NumPyのpolycompanion()メソッドで多項式係数からコンパニオン行列を求める方法
多項式係数の1次元配列からコンパニオン行列(companion matrix)を返すには、PythonのNumPyが提供する polynomial.polycompanion() メソッドを使用します。コンパニオン行列とは、モニック多項式の係数から構成される正方行列であり、その固有値は元の多項式の根と一致するという重要な性質を持ちます。なお、冪級数(べき級数)の場合は基底のスケーリングによってコンパニオン行列を対称化することができないため、この関数は直交多項式向けの類似関数とは挙動が異なる点に注意してください。polycompanion() メソッドは、次数 deg の多項式に対して (deg
-
Pythonでエルミート級数係数の1次元配列からスケーリングされたコンパニオン行列を返す方法
多項式係数の1次元配列からスケーリングされたコンパニオン行列を返すには、PythonのNumPyでhermite.hermcompanion()メソッドを使用します。このメソッドでは、基底多項式がスケーリングされており、cがエルミート基底多項式である場合にコンパニオン行列が対称行列になります。スケーリングを行うことで、スケーリングなしの場合と比べてより良い固有値の推定値が得られます。さらに、numpy.linalg.eigvalshを使って固有値を求めれば、基底多項式の固有値は必ず実数になることが保証されます。このメソッドは、次数(deg)× 次数(deg)の次元を持つスケーリングされたコンパ