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

NumPyのchebyshev.chebroots()でチェビシェフ級数の根を計算する方法

多項式の根を計算するには、PythonのNumPyが提供する chebyshev.chebroots() メソッドを使用します。このメソッドは、チェビシェフ級数の根を配列として返します。すべての根が実数の場合は結果も実数配列となり、虚数を含む場合は複素数配列となります。引数 c には、係数を格納した1次元配列を指定します。

根の推定値は、コンパニオン行列の固有値として求められます。複素平面上で原点から大きく離れた根は、そのような値において級数が数値的に不安定になるため、誤差が大きくなる傾向があります。また、重複度が2以上の根についても、根の近傍で級数の値が根の誤差に比較的鈍感なため、誤差が拡大しやすくなります。原点付近の孤立した根については、ニュートン法を数回反復することで精度を向上させることが可能です。

実行手順

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

from numpy.polynomial import chebyshev as C

多項式の根を計算するには、Python NumPyの chebyshev.chebroots() メソッドを使用します。

print("Result (roots)...\n", C.chebroots((-1, 0, 1)))

結果のデータ型を確認します。

print("\nType...\n", C.chebroots((-1, 0, 1)).dtype)

結果の形状を確認します。

print("\nShape...\n", C.chebroots((-1, 0, 1)).shape)

サンプルコード

以下は、ここまでの手順をまとめた完全なサンプルコードです。

from numpy.polynomial import chebyshev as C

# 多項式の根を計算するには、Python NumPyの chebyshev.chebroots() メソッドを使用します。
# このメソッドは級数の根を配列で返します。
# すべての根が実数なら結果も実数配列、そうでなければ複素数配列になります。

# 引数 c は係数の1次元配列です。
print("Result (roots)...\n", C.chebroots((-1, 0, 1)))

# データ型を取得
print("\nType...\n", C.chebroots((-1, 0, 1)).dtype)

# 形状を取得
print("\nShape...\n", C.chebroots((-1, 0, 1)).shape)

実行結果

Result (roots)...
    [-1. 1.]

Type...
float64

Shape...
(2,)

このように、係数 (-1, 0, 1) を持つ多項式 x² − 1 の根 [-1, 1] が正しく求められており、データ型は float64、形状は (2,) であることが確認できます。

  1. Python NumPyで複素数の根を持つチェビシェフ級数を生成する方法

    PythonのNumPyライブラリでは、指定した根を持つチェビシェフ級数を生成するために、chebyshev.chebfromroots()メソッドを使用します。このメソッドは、級数の係数を格納した1次元配列を返します。すべての根が実数であれば結果も実数配列になりますが、根の一部が複素数の場合は、計算結果の係数がすべて実数であっても、出力は複素数型(complex)になります。引数rootsには、根を要素とするシーケンスを渡します。なお、チェビシェフ級数とは、チェビシェフ多項式 Tn(x) を基底とした多項式の表現形式です。chebfromroots() を使えば、因数分解された形の情報(根)

  2. Python NumPyのchebfit()でチェビシェフ級数の最小二乗近似をデータにフィットさせる方法

    チェビシェフ級数の最小二乗近似をデータに適合させるには、PythonのNumPyが提供するchebyshev.chebfit()関数を使用します。この関数は、低次から高次の順に並べられたチェビシェフ係数を返します。yが2次元配列の場合、yのk列目のデータに対応する係数は、結果のk列目に格納されます。引数xには、M個のサンプル(データ)点(x[i], y[i])のx座標を指定します。引数yにはサンプル点のy座標を指定します。同じx座標を共有する複数組のサンプル点は、1つのデータセットを1列として含む2次元配列をyに渡すことで、1回の呼び出しでそれぞれ独立にフィットできます。引数degはフィッティ