Python NumPyのpolyvalfromroots()で根から多項式を評価する方法 ― tensor=Falseでxをrの列にブロードキャスト
根(解)で指定された多項式を任意の点 x で評価したい場合は、Python の NumPy が提供する polynomial.polyvalfromroots() メソッドを使用します。この記事では、各引数の意味と、tensor=False を指定した際に x が r の列にブロードキャストされる仕組みについて、具体的なコード例とともに解説します。
polyvalfromroots() の主な引数
第1引数:x
評価を行う点を指定します。x がリストやタプルの場合は ndarray に変換され、それ以外の場合はそのままスカラーとして扱われます。どちらの場合でも、x(またはその要素)は自身および r の要素との加算・乗算をサポートしている必要があります。
第2引数:r
多項式の根を格納した配列です。r が多次元の場合、最初のインデックスが根のインデックスを表し、残りのインデックスが複数の多項式を列挙します。たとえば2次元の場合、各多項式の根は r の列に格納されていると考えることができます。
第3引数:tensor
True を指定すると、根の配列の形状が右側に 1 を追加して拡張されます。拡張される次元数は x の次元数に相当し、スカラーは次元 0 として扱われます。その結果、r 内の係数のすべての列が、x のすべての要素に対して評価されます。False を指定した場合は、評価時に x が r の列に対してブロードキャストされます。このキーワードは、r が多次元である場合に特に有用です。デフォルト値は True です。
実装手順
まず、必要なライブラリをインポートします。
from numpy.polynomial.polynomial import polyvalfromroots import numpy as np
多次元の係数配列を作成します。
c = np.arange(-2, 2).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 で評価するために、polyvalfromroots() メソッドを使用します。ここでは tensor=False を指定しているため、x は r の列にブロードキャストされて評価されます。
print("\nResult...\n",polyvalfromroots([-2, 1], c, tensor=False))完全なコード例
from numpy.polynomial.polynomial import polyvalfromroots
import numpy as np
# 多次元の係数配列を作成
c = np.arange(-2, 2).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で評価(tensor=Falseでxをrの列にブロードキャスト)
print("\nResult...\n",polyvalfromroots([-2, 1], c, tensor=False))実行結果
Our Array... [[-2 -1] [ 0 1]] Dimensions of our Array... 2 Datatype of our Array object... int64 Shape of our Array object... (2, 2) Result... [-0. 0.]
このように、tensor=False を指定することで、評価点 x が根の配列 r の各列にブロードキャストされ、複数の多項式を効率的に一度に評価できることが確認できます。
-
【Python】3次元の係数配列を使ってxとyのデカルト積上の2次元多項式を評価する方法
xとyのデカルト積(直積)上で2次元多項式を評価するには、Pythonの numpy.polynomial.polynomial モジュールに含まれる polygrid2d(x, y, c) メソッドを使用します。このメソッドは、xとyのデカルト積の各点における2次元多項式の値を返します。パラメータの説明第1パラメータ(x, y): 評価対象となる2つの系列です。xまたはyがリストやタプルとして渡された場合は、まずndarrayに変換されます。すでにndarrayである場合はそのまま使用され、それ以外の場合はスカラーとして扱われます。第2パラメータ(c): 多項式の係数を格納した配列です。次数
-
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は係数