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

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

PythonのNumPyライブラリを使用して、指定した点 x におけるチェビシェフ級数を評価するには、numpy.polynomial.chebyshev モジュールの chebval() メソッドを利用します。この記事では、chebval() の各パラメータの意味と、特に tensor 引数による係数配列の形状拡張の挙動について、具体的なコード例とともに解説します。

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

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

チェビシェフ級数を評価する対象となる点です。x がリストやタプルとして渡された場合、自動的にndarrayに変換されます。それ以外の場合はスカラーとしてそのまま扱われます。いずれの場合も、x またはその要素は、自身および係数配列 c の要素との加算・乗算が可能である必要があります。

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

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

第3引数:tensor(形状拡張の有無)

tensor=True を指定すると、係数配列の形状が右側に1次元ずつ拡張されます。拡張される次元の数は x の次元数と一致します(スカラーは次元0として扱われます)。その結果、c 内のすべての係数列が、x のすべての要素に対して評価されます。

一方、tensor=False を指定した場合は、評価時に xc の列に対してブロードキャストされます。このキーワード引数は、c が多次元である場合に特に有用です。デフォルト値は True です。

実装手順

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

import numpy as np
from numpy.polynomial import chebyshev as C

ステップ2:多次元の係数配列を作成する

np.arange(6) で0から5までの整数列を生成し、reshape(2, 3) で2行3列の配列に変換します。

c = np.arange(6).reshape(2,3)

ステップ3:配列の内容・次元数・データ型・形状を確認する

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

ステップ4:chebval()でチェビシェフ級数を評価する

評価点として [1, 2] を渡し、tensor=True を指定して呼び出します。

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

完全なコード例

import numpy as np
from numpy.polynomial import chebyshev as C

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

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

# chebval()メソッドで点x=[1,2]におけるチェビシェフ級数を評価
print("\nResult (chebval)...\n", C.chebval([1,2], c, tensor=True))

実行結果

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

Dimensions of our Array...
2

Datatype of our Array object...
int64

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

Result (chebval)...
    [[ 3. 6.]
    [ 5. 9.]
    [ 7. 12.]]

結果の解説

入力された係数配列 c は形状 (2, 3) の2次元配列です。ここでは、各行が1つの多項式の係数列(定数項から順に)を表していると解釈できます。

tensor=True により、評価点 x = [1, 2](要素数2=1次元)に対応するよう係数配列の形状が拡張され、各係数列が両方の評価点に対して計算されます。その結果、出力は「3つの係数列 × 2つの評価点」に対応する形状 (3, 2) の配列となっています。

なお、計算結果が小数(float)で返されているのは、チェビシェフ多項式の評価が内部的に浮動小数点演算で行われるためです。

  1. Python NumPyのchebval2d()で点(x, y)における2次元チェビシェフ級数を評価する方法

    PythonのNumPyで点(x, y)における2次元チェビシェフ級数を評価するには、numpy.polynomialモジュールのchebval2d()メソッドを使用します。このメソッドは、xとyの対応する値のペアから構成される各点における2次元チェビシェフ級数の値を返します。 chebval2d()メソッドのパラメータ x, y:2次元級数を評価する点の座標です。xとyは同じ形状である必要があります。リストやタプルが渡された場合は、まずndarrayに変換され、それ以外の場合はそのまま扱われます。ndarrayでない場合はスカラーとして処理されます。 c:係数の配列です。多重次数i, jの項

  2. NumPyのchebval()で係数列にブロードキャストされた点xのチェビシェフ級数を評価する方法

    チェビシェフ級数を指定した点 x で評価するには、Python の NumPy が提供する chebyshev.chebval() メソッドを使用します。この記事では、各パラメータの意味と、多次元係数配列に対して tensor=False を指定して評価する具体的な手順を解説します。 chebval() メソッドのパラメータ 第1引数:x(評価する点) x がリストまたはタプルの場合は ndarray に変換され、それ以外の場合はそのままスカラーとして扱われます。どちらの場合でも、x またはその要素は、自身および係数配列 c の要素との加算・乗算をサポートしている必要があります。 第2引