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

Python・NumPyでルジャンドル級数を点xで評価する方法 ― legval()の使い方とtensor引数による係数配列の形状拡張

PythonのNumPyでは、numpy.polynomial.legendre.legval()メソッドを使うことで、指定した点xにおけるルジャンドル級数の値を簡単に評価できます。この記事では、legval()メソッドの基本的な使い方と、tensor引数によって係数配列の形状がどのように拡張されるのかを、具体的なコード例とともに解説します。

legval()メソッドのパラメータ

第1引数:x(評価する点)

ルジャンドル級数を評価する対象となる点です。xがリストやタプルとして渡された場合、自動的にndarrayに変換され、スカラーとして渡された場合はそのまま扱われます。いずれの場合も、xまたはその要素は、自身および係数cの要素との加算・乗算をサポートしている必要があります。

第2引数:c(係数配列)

次数nの項に対応する係数がc[n]に格納されるように並べられた係数の配列です。cが多次元の場合、残りのインデックスは複数の多項式を表します。2次元の場合、係数はcの列に格納されていると考えることができます。

第3引数:tensor(テンソル展開の有無)

Trueに設定すると、係数配列cの形状が右側に1を追加することで拡張されます。追加される次元の数はxの次元数と一致し、スカラーの次元数は0として扱われます。その結果、c内のすべての係数列が、xのすべての要素に対して評価されます。Falseの場合、xはcの列に対してブロードキャストされて評価されます。このキーワードは、cが多次元である場合に特に有用です。デフォルト値はTrueです。

実装手順

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

import numpy as np
from numpy.polynomial import legendre as L

次に、係数の多次元配列を作成します。

c = np.arange(4).reshape(2,2)

作成した配列を表示します。

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

配列の次元数を確認します。

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

データ型を取得します。

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

配列の形状を取得します。

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

点xにおけるルジャンドル級数を評価するには、polynomial.legendre.legval()メソッドを使用します。

print("\nResult...\n",L.legval([1,2],c, tensor = True))

完全なコード例

import numpy as np
from numpy.polynomial import legendre as L

# 係数の多次元配列を作成
c = np.arange(4).reshape(2,2)

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

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

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

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

# 点xにおけるルジャンドル級数を評価
print("\nResult...\n",L.legval([1,2],c, tensor = True))

出力結果

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

Dimensions of our Array...
2

Datatype of our Array object...
int64

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

Result...
    [[2. 4.]
    [4. 7.]]

結果の解説

この例では、2×2の係数配列cに対して、点x=[1, 2]でルジャンドル級数を評価しています。tensor=True(デフォルト値)が有効になっているため、係数配列の形状が拡張され、各係数列がxの各要素(1と2)に対して個別に評価されます。出力結果は2×2の配列となっており、各行がそれぞれの評価点に対応する値を示しています。このようにtensor引数を活用することで、多次元の係数配列を効率的に一括評価できるのがlegval()メソッドの大きな利点です。

  1. Python NumPyのhermite.hermval()で点xにおけるエルミート級数を評価し、tensor=Trueで係数配列の形状を拡張する方法

    PythonのNumPyライブラリでは、hermite.hermval()メソッドを使用することで、指定した点xにおけるエルミート級数を簡単に評価できます。本記事では、tensor引数にTrueを指定した際に、係数配列の形状がxの各次元に対してどのように拡張されるのかについても詳しく解説します。hermval()メソッドのパラメータ第1引数:x(評価する点)xはエルミート級数を評価する対象の点です。リストやタプルを渡した場合はndarrayに変換され、それ以外の場合はスカラーとしてそのまま扱われます。いずれの場合も、xまたはその要素は、自身およびcの要素との加算・乗算をサポートしている必要があ

  2. Python NumPyのchebval()で点xにおけるチェビシェフ級数を評価し、tensor引数で係数配列の形状を拡張する方法

    PythonのNumPyライブラリを使用して、指定した点 x におけるチェビシェフ級数を評価するには、numpy.polynomial.chebyshev モジュールの chebval() メソッドを利用します。この記事では、chebval() の各パラメータの意味と、特に tensor 引数による係数配列の形状拡張の挙動について、具体的なコード例とともに解説します。 chebval()メソッドのパラメータ 第1引数:x(評価する点) チェビシェフ級数を評価する対象となる点です。x がリストやタプルとして渡された場合、自動的にndarrayに変換されます。それ以外の場合はスカラーとしてその