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

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 の各列にブロードキャストされ、複数の多項式を効率的に一度に評価できることが確認できます。

  1. 【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): 多項式の係数を格納した配列です。次数

  2. 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は係数