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

【Python】NumPyのhermevander()でエルミート多項式のファンデルモンド行列を生成する方法

PythonのNumPyを使ってエルミート多項式(Hermite_e)のファンデルモンド行列を生成するには、numpy.polynomial.hermite_eモジュールのhermevander()関数を使用します。この関数は擬似ファンデルモンド行列を返します。返される行列の形状は「x.shape + (deg + 1,)」となり、最後のインデックスが対応するエルミート_e多項式の次数を表します。また、dtypeは変換後のxと同じになります。

hermevander()の主なパラメータ

  • x:点の配列。要素に複素数が含まれるかどうかに応じて、float64またはcomplex128に変換されます。スカラー値を渡した場合は1次元配列へ変換されます。
  • deg:結果として得られる行列の次数。

HermiteとHermite_eの違い

NumPyには「物理学者のエルミート多項式」(hermite)と「確率論者のエルミート多項式」(hermite_e)の2種類が用意されています。hermevander()は後者に対応しており、確率・統計分野での直交多項式による近似などで広く活用されています。

実行手順

最初に必要なライブラリをインポートします。

import numpy as np
from numpy.polynomial import hermite_e as H

配列を作成します。

x = np.array([0, 1, -1, 2])

配列を表示します。

print("Our Array...\n",x)

次元を確認します。

print("\nDimensions of our Array...\n",x.ndim)

データ型を取得します。

print("\nDatatype of our Array object...\n",x.dtype)

形状を取得します。

print("\nShape of our Array object...\n",x.shape)

hermevander()を使って、エルミート_e多項式のファンデルモンド行列を生成します。

print("\nResult...\n",H.hermevander(x, 2))

サンプルコード

import numpy as np
from numpy.polynomial import hermite_e as H

# 配列を作成
x = np.array([0, 1, -1, 2])

# 配列を表示
print("Our Array...\n",x)

# 次元を確認
print("\nDimensions of our Array...\n",x.ndim)

# データ型を取得
print("\nDatatype of our Array object...\n",x.dtype)

# 形状を取得
print("\nShape of our Array object...\n",x.shape)

# hermevander()でエルミート_e多項式のファンデルモンド行列を生成
print("\nResult...\n",H.hermevander(x, 2))

出力結果

Our Array...
    [ 0  1 -1  2]

Dimensions of our Array...
1

Datatype of our Array object...
int64

Shape of our Array object...
(4,)

Result...
    [[ 1.  0. -1.]
     [ 1.  1.  0.]
     [ 1. -1.  0.]
     [ 1.  2.  3.]]

結果の読み方

出力された行列の各行は、入力点xにおける各次数のエルミート_e多項式の値を表しています。具体的には、H₀(x)=1、H₁(x)=x、H₂(x)=x²−1 に対応します。例えば x=2 の場合、行は「1, 2, 3」となり、2²−1=3 という計算結果と一致していることが確認できます。このようにして得られたファンデルモンド行列は、最小二乗法による多項式フィッティングや直交多項式系での補間計算などに利用できます。

  1. Python NumPyのlaguerre.lagvander()でラゲール多項式の擬似ファンデルモンド行列を生成する方法

    ラゲール多項式の擬似ファンデルモンド行列の生成方法PythonのNumPyには、ラゲール多項式の擬似ファンデルモンド(Vandermonde)行列を生成するための便利な関数 laguerre.lagvander() が用意されています。この関数は、与えられた点の配列に対して、次数0から指定した次数までのラゲール多項式の値を計算し、それらを列として並べた行列を返します。返される行列の形状は x.shape + (deg + 1,) となります。最後のインデックスは、対応するラゲール多項式の次数を表します。また、出力のdtypeは変換後の入力配列と同じになります。パラメータの説明x:点の配列。要素

  2. Python NumPyで複素数点配列からチェビシェフ多項式のファンデルモンド行列を生成する方法

    PythonのNumPyライブラリでは、chebyshev.chebvander()関数を使用することで、チェビシェフ多項式のファンデルモンド行列を簡単に生成できます。この関数は、指定した点の配列と次数をもとに、チェビシェフ多項式のファンデルモンド行列を返します。戻り値となる行列の形状は x.shape + (deg + 1,) であり、最後のインデックスは対応するチェビシェフ多項式の次数を表します。また、dtypeは変換後のxと同じになります。パラメータについてx(点の配列): 点の配列を指定します。要素に複素数が含まれる場合はcomplex128に、そうでない場合はfloat64に変換され