Pythonでエルミート級数の根(零点)を計算する方法
PythonのNumPyでエルミート級数の根(零点)を計算するには、numpy.polynomial.hermiteモジュールのhermite.hermroots()メソッドを使用します。
このメソッドは、級数の根を配列として返します。すべての根が実数である場合、返される結果も実数となり、そうでない場合は複素数になります。引数cには、級数の係数を格納した1次元配列を指定します。
数値計算における注意点
根の推定値は、コンパニオン行列の固有値として求められます。そのため、以下のような点に留意する必要があります。
- 複素平面上で原点から遠い根は、そのような値に対する級数の数値的不安定性のため、誤差が大きくなる可能性があります。
- 重複度が1より大きい根(重解)も誤差が大きくなりやすいです。これは、そのような点の近傍では級数の値が根の誤差に対して比較的鈍感になるためです。
- 原点付近の孤立した根については、ニュートン法を数回反復することで精度を改善できます。
手順
まず、必要なライブラリをインポートします。
from numpy.polynomial import hermite as H
次に、hermite.hermroots()メソッドを使ってエルミート級数の根を計算します。
print("Result...\n", H.hermroots((-1, 0, 1)))結果のデータ型を確認します。
print("\nType...\n", H.hermroots((-1, 0, 1)).dtype)さらに、結果の形状を取得します。
print("\nShape...\n", H.hermroots((-1, 0, 1)).shape)コード例
from numpy.polynomial import hermite as H
# エルミート級数の根を計算するには、
# PythonのNumPyにあるhermite.hermroots()メソッドを使用します。
# このメソッドは級数の根を配列として返します。
# すべての根が実数なら結果も実数に、そうでなければ複素数になります。
# 引数cは係数の1次元配列です。
print("Result...\n", H.hermroots((-1, 0, 1)))
# データ型を取得
print("\nType...\n", H.hermroots((-1, 0, 1)).dtype)
# 形状を取得
print("\nShape...\n", H.hermroots((-1, 0, 1)).shape)出力結果
Result... [-0.8660254 0.8660254] Type... float64 Shape... (2,)
このように、係数(-1, 0, 1)を持つエルミート級数に対してhermroots()を実行すると、約±0.866という2つの実数の根が得られます。結果のデータ型はfloat64、形状は(2,)となり、すべての根が実数であるため実数型の配列が返されていることが分かります。
-
Python NumPyのhermite.hermfit()でデータにエルミート級数の最小二乗フィットを適用する方法
エルミート級数の最小二乗フィットとはデータに対してエルミート級数の最小二乗フィットを求めるには、PythonのNumPyが提供する hermite.hermfit() メソッドを使用します。このメソッドは、低次から高次の順に並べられたエルミート係数を返します。また、yが2次元配列の場合、yのk列目のデータに対応する係数は、戻り値のk列目に格納されます。主なパラメータx: M個のサンプル点 (x[i], y[i]) のx座標です。y: サンプル点のy座標です。同じx座標を共有する複数組のサンプル点は、1つのデータセットを1列として含む2次元配列をyに渡すことで、1回の呼び出しでそれぞれ独立にフィ
-
Pythonでxとyのデカルト積上の2次元エルミート級数を評価する方法
xとyのデカルト積上で2次元エルミート級数を評価するには、PythonのNumPyが提供する hermite.hermgrid2d(x, y, c) メソッドを使用します。このメソッドは、xとyのデカルト積(すべての組み合わせ)からなる各点における2次元多項式の値を返します。hermgrid2d()メソッドのパラメータx, y: 2次元級数は、xとyのデカルト積上の点で評価されます。xまたはyがリストやタプルの場合、まずndarrayに変換されます。それ以外の場合はそのまま変更されず、ndarrayでなければスカラーとして扱われます。c: 係数を格納した配列です。次数i, jの項に対応する係数