Python NumPyのpolyval()で多項式を評価する方法 ― tensor引数による係数配列の形状拡張を解説
点 x における多項式の値を評価するには、Python の NumPy が提供する polynomial.polyval() メソッドを使用します。この記事では、各引数の役割と、特に tensor 引数によって係数配列の形状がどのように拡張されるのかを、具体的なコード例とともにわかりやすく解説します。
polyval() メソッドの引数について
第1引数:x
評価を行う対象となる点です。x がリストまたはタプルの場合は ndarray に変換され、それ以外の場合はそのまま変更されずにスカラーとして扱われます。いずれの場合も、x またはその要素は、自身および係数配列 c の要素との間で加算・乗算が可能である必要があります。
第2引数:c
多項式の係数を格納した配列です。次数 n の項に対応する係数が c[n] に収められるように並べられています。c が多次元の場合、残りのインデックスは複数の多項式を表します。2次元の場合、係数は c の列に格納されていると考えることができます。
第3引数:tensor
tensor=True を指定すると、係数配列の形状が右側に 1 を追加して拡張されます。この拡張は x の各次元ごとに行われ、スカラーの次元数は 0 として扱われます。その結果、c 内のすべての係数列が、x のすべての要素に対して評価されます。
False を指定した場合は、評価時に x が c の列に対してブロードキャストされます。このキーワードは、c が多次元である場合に特に有用です。デフォルト値は True です。
実行手順
まず、必要なライブラリをインポートします。
import numpy as np from numpy.polynomial.polynomial import polyval
次に、係数用の多次元配列を作成します。
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 における多項式の値を評価するために、NumPy の polynomial.polyval() メソッドを使用します。
print("\nResult...\n",polyval([1,2], c, tensor=True))サンプルコード全体
import numpy as np
from numpy.polynomial.polynomial import polyval
# 係数用の多次元配列を作成
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)
# polyval() メソッドで多項式を評価
print("\nResult...\n",polyval([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.]]
まとめ
polyval() メソッドを使うことで、多点における多項式の値を効率的に計算できます。特に tensor=True(デフォルト)の場合、係数配列の形状が自動的に拡張され、x の各要素に対してすべての係数列が評価されるため、多次元の係数配列を扱う際にも柔軟に対応できます。
-
Python NumPyのpolygrid2dでxとyのデカルト積上の2次元多項式を評価する方法
Pythonでxとyのデカルト積(直積)上の2次元多項式を評価するには、numpy.polynomial.polynomialモジュールのpolygrid2d(x, y, c)メソッドを使用します。このメソッドは、xとyのデカルト積の各点における2次元多項式の値を返します。polygrid2dメソッドのパラメータ第1パラメータ:x、yxとyは、それぞれデカルト積の各点で評価される配列です。xまたはyがリストやタプルの場合、まずndarrayに変換されます。すでにndarrayである場合はそのまま使用され、ndarrayでもリストでもない場合はスカラーとして扱われます。第2パラメータ:ccは係数
-
Python NumPyのpolyval3d()メソッドで4D係数配列を使って点(x, y, z)の3D多項式を評価する方法
3D多項式を点(x, y, z)で評価するには、Python NumPyのpolynomial.polyval3d()メソッドを使用します。このメソッドは、x、y、zの対応する値から構成される三つ組の点における多次元多項式の値を返します。polyval3d()メソッドのパラメータ引数として渡すx、y、zは、同じ形状を持つ必要があります。いずれかがリストまたはタプルの場合は、まずndarrayに変換されます。ndarrayでない場合はスカラーとして扱われます。パラメータcは係数の配列で、多項式の次数 i, j, k に対応する項の係数が c[i,j,k] に格納されるように並べられています。cの