NumPyのpolyvalfromroots()で多項式を評価する方法 ― rの係数の全列をxの全要素に対して計算
はじめに
PythonのNumPyライブラリには、根(解)によって指定された多項式を任意の点xで評価できる polynomial.polyvalfromroots() メソッドが用意されています。本記事では、このメソッドの使い方を、rの係数のすべての列がxのすべての要素に対してどのように評価されるかに焦点を当てながら、具体的なコード例とともに分かりやすく解説します。
polyvalfromroots()メソッドのパラメータ
第1パラメータ:x(評価する点)
xは多項式を評価する対象の点です。リストやタプルを渡した場合は自動的にndarrayへ変換され、それ以外の場合はそのままスカラーとして扱われます。いずれの場合も、xまたはその要素は、自身同士およびrの要素との加算・乗算をサポートしている必要があります。
第2パラメータ:r(根の配列)
rは多項式の根を格納した配列です。rが多次元配列の場合、最初のインデックスが根のインデックスを表し、残りのインデックスは複数の多項式を区別します。たとえば2次元の場合、各多項式の根はrの「列」に格納されていると考えることができます。
第3パラメータ:tensor(テンソル展開の有無)
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で評価するには、NumPyの polyvalfromroots() メソッドを使用します。ここではtensor=Trueを指定しています。
print("\nResult...\n", polyvalfromroots([-2, 1], c, tensor=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で評価
print("\nResult...\n", polyvalfromroots([-2, 1], c, tensor=True))
出力結果
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. 3.]
[ 3. 0.]]
まとめ
NumPyの polyvalfromroots() を使えば、根から構成された多項式を効率的に評価できます。tensor引数をTrue(デフォルト)にすることで、多次元の根の配列rのすべての列が、評価点xのすべての要素に対して個別に計算されるため、複数の多項式を一度に処理したい場合に非常に便利です。科学技術計算や数値解析の現場で、ぜひ活用してみてください。
-
Python NumPyのpolyvalfromroots()で根から多項式を評価する方法
PythonのNumPyでは、polynomial.polyvalfromroots()メソッドを使うことで、根(解)によって指定された多項式を任意の点xで評価できます。この記事では、各パラメータの意味と、実際のコード例・実行結果をわかりやすく解説します。 polyvalfromroots()メソッドのパラメータ 第1引数:x 評価を行う点を指定します。リストやタプルを渡した場合はndarrayに変換され、それ以外の場合はスカラーとしてそのまま扱われます。いずれの場合も、xまたはその要素が、自身およびrの要素との加算・乗算をサポートしている必要があります。 第2引数:r 多項式の根を格納した配
-
【Python】行列内の0を含む行と列をすべて0に変換するアルゴリズム
問題概要2次元の数値行列が与えられたとき、行列内にある0を含む行と列のすべての要素を0に置き換え、最終的な行列を返すプログラムを作成します。例えば、入力行列の中で0が存在する行(0行目、2行目、3行目)は、最終的な行列ではすべて0になります。同様に、0が存在する列(0列目、1列目、2列目)もすべて0に変換されます。解法のアプローチこの問題は、以下の手順で解くことができます。行数を n、列数を m とします。n × m のサイズの結果用行列 res を作成し、すべての要素を0で初期化します。元の行列の転置行列 transpose を作成します。各行 i について、matrix[i] に0が含まれ