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

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

エルミート多項式のファンデルモンド行列を生成するには、Python NumPyの numpy.polynomial.hermite モジュールに含まれる hermvander() メソッドを使用します。このメソッドは偽ファンデルモンド行列を返します。

返される行列の形状は x.shape + (deg + 1,) となり、最後のインデックスは対応するエルミート多項式の次数を表します。行列の各列は、入力点におけるエルミート多項式 H₀(x)、H₁(x)、…、Hdeg(x) の値に相当します。データ型は変換後のxと同一になります。

主なパラメータは以下の通りです。

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

実行手順

ステップ1:必要なライブラリをインポートする

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

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

ステップ2:配列を作成する

点の配列を作成します。

x = np.array([0, 3.5, -1.4, 2.5])

ステップ3:配列を表示する

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

ステップ4:次元数を確認する

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

ステップ5:データ型を確認する

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

ステップ6:形状を確認する

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

ステップ7:ファンデルモンド行列を生成する

エルミート多項式のファンデルモンド行列を生成するには、H.hermvander() を呼び出します。

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

完全なサンプルコード

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

# 配列を作成
x = np.array([0, 3.5, -1.4, 2.5])

# 配列を表示
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)

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

実行結果

Our Array...
   [ 0.  3.5 -1.4  2.5]

Dimensions of our Array...
1

Datatype of our Array object...
float64

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

Result...
   [[  1.   0.  -2. ]
    [  1.   7.  47. ]
    [  1.  -2.8  5.84]
    [  1.   5.  23. ]]

結果の解説

上記の例では、次数 deg = 2 を指定したため、各行は各点における最初の3つのエルミート多項式の値を表しています。

  • 第1列:H₀(x) = 1(すべての点で常に1)
  • 第2列:H₁(x) = 2x
  • 第3列:H₂(x) = 4x² − 2

たとえば x = 3.5 の場合、H₁(3.5) = 2 × 3.5 = 7、H₂(3.5) = 4 × 3.5² − 2 = 47 となり、出力の2行目「[1. 7. 47.]」と一致していることが確認できます。

このようにして得られるファンデルモンド行列は、エルミート級数による多項式近似や最小二乗フィッティングなど、さまざまな数値計算の場面で活用できます。

  1. PythonとNumPyでチェビシェフ多項式のファンデルモンド行列を生成する方法

    PythonのNumPyライブラリを使用して、チェビシェフ多項式のファンデルモンド行列を生成するには、chebyshev.chebvander() 関数を利用します。この関数はファンデルモンド行列を返し、返される行列の形状は x.shape + (deg + 1,) となります。最後のインデックスは、対応するチェビシェフ多項式の次数を表します。また、dtypeは変換後のxと同じになります。引数について説明します。第1引数の x は点の配列です。要素に複素数が含まれるかどうかに応じて、dtypeはfloat64またはcomplex128に変換されます。xがスカラーの場合は1次元配列に変換されます

  2. Pythonでエルミート多項式とx・y・zの複素数サンプル点から疑似ファンデルモンド行列を生成する方法

    エルミート多項式とx、y、zのサンプル点から疑似ファンデルモンド行列を生成するには、PythonのNumPyが提供するhermite.hermvander3d()関数を使用します。このメソッドは、計算結果として疑似ファンデルモンド行列を返します。主なパラメータは以下の通りです。x、y、z: 点座標の配列。すべて同じ形状である必要があります。dtypeは、要素に複素数が含まれるかどうかに応じてfloat64またはcomplex128へ自動的に変換され、スカラーを渡した場合は1次元配列に変換されます。deg: [x_deg, y_deg, z_deg] の形式で指定する、各軸の最大次数のリスト。な