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

Pythonで複素数の根からエルミート級数を生成する方法(hermfromroots活用ガイド)

与えられた複素数の根(解)からエルミート級数を生成するには、Python NumPy の hermite.hermfromroots() メソッドを使用します。このメソッドは、エルミート級数の係数を格納した 1 次元配列を返します。

返される配列のデータ型は、根の種類によって決まります。すべての根が実数であれば結果は実数配列になりますが、根の一部でも複素数が含まれている場合は、計算結果の係数がすべて実数であったとしても、出力は複素数型(complex)になります。引数 roots には、根を要素として持つシーケンス(リストやタプルなど)を渡します。

手順

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

from numpy.polynomial import hermite as H

続いて、hermite.hermfromroots() メソッドを使って、虚数単位 j と −j を根として持つエルミート級数を生成します。

j = complex(0,1)
print("Result...\n",H.hermfromroots((-j, j)))

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

print("\nType...\n",H.hermfromroots((-j, j)).dtype)

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

print("\nShape...\n",H.hermfromroots((-j, j)).shape)

サンプルコード

from numpy.polynomial import hermite as H

# 複素数の根からエルミート級数を生成するには、
# hermite.hermfromroots() メソッドを使用します。
# このメソッドは係数の 1 次元配列を返します。
# 根がすべて実数なら実数配列、一部でも複素数が含まれれば、
# 係数が実数でも結果は複素数型になります。

# 引数 roots には根を格納したシーケンスを指定します。
j = complex(0,1)
print("Result...\n",H.hermfromroots((-j, j)))

# データ型を取得
print("\nType...\n",H.hermfromroots((-j, j)).dtype)

# 形状を取得
print("\nShape...\n",H.hermfromroots((-j, j)).shape)

出力

Result...
    [1.5 +0.j 0. +0.j 0.25+0.j]

Type...
complex128

Shape...
(3,)

結果の解説

この例では、根として ±j(虚数単位)を指定しているため、対応する多項式は (x + j)(x − j) = x² + 1 となります。これをエルミート多項式の基底で表すと、H₀ = 1、H₂ = 4x² − 2 より、x² + 1 = 0.25・H₂ + 1.5・H₀ となるため、係数配列は [1.5, 0, 0.25] になります。

また、根に複素数が含まれているため、係数自体は実数値ですが、出力のデータ型は complex128 になっている点にも注目してください。さらに、配列の長さは「根の数 + 1」となるため、2 つの根から形状 (3,) の配列が得られます。

  1. Pythonで複素数の点配列を使って指定した次数のファンデルモンド行列を生成する方法

    PythonのNumPyでは、numpy.polynomial.polynomialモジュールに含まれるpolyvander()関数を使用することで、指定した次数のファンデルモンド行列(Vandermonde行列)を簡単に生成できます。この関数は、入力された点の配列に対するファンデルモンド行列を返します。戻り値となる行列の形状は x.shape + (deg + 1,) であり、最後のインデックスがxの冪乗(べきじょう)に対応します。また、データ型(dtype)は変換後のxと同じものが使用されます。polyvander()関数のパラメータa:点の配列です。要素に複素数が含まれる場合はcompl

  2. Pythonで与えられた根を持つモニック多項式を生成する方法

    PythonのNumPyで指定した根を持つモニック多項式(最高次の係数が1になる多項式)を生成するには、polynomial.polyfromroots()メソッドを使用します。このメソッドは、多項式の係数を1次元配列として返します。すべての根が実数の場合は出力も実数となり、虚数の根が含まれる場合は複素数となります。引数rootsには、根を要素として含むシーケンスを渡します。手順まず、必要なライブラリをインポートします。from numpy.polynomial import polynomial as Pモニック多項式を生成します。print(Result...\n,P.polyfromro