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

Python NumPyのpolycompanion()メソッドで多項式係数からコンパニオン行列を求める方法

多項式係数の1次元配列からコンパニオン行列(companion matrix)を返すには、PythonのNumPyが提供する polynomial.polycompanion() メソッドを使用します。

コンパニオン行列とは、モニック多項式の係数から構成される正方行列であり、その固有値は元の多項式の根と一致するという重要な性質を持ちます。なお、冪級数(べき級数)の場合は基底のスケーリングによってコンパニオン行列を対称化することができないため、この関数は直交多項式向けの類似関数とは挙動が異なる点に注意してください。

polycompanion() メソッドは、次数 deg の多項式に対して (deg, deg) の次元を持つコンパニオン行列を返します。引数 c には、次数の低い項から高い項へと順に並べた多項式係数の1次元配列を指定します。

実行手順

まず、必要なライブラリをインポートします。

import numpy as np
from numpy.polynomial.polynomial import polycompanion

係数の1次元配列を作成します。

c = np.array([1, 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)

多項式係数の1次元配列からコンパニオン行列を返すには、polynomial.polycompanion() メソッドを呼び出します。

print("\nResult...\n",polycompanion(c))

コード例全体

import numpy as np
from numpy.polynomial.polynomial import polycompanion

# 係数の1次元配列を作成
c = np.array([1, 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)

# 多項式係数の1次元配列からコンパニオン行列を返す
print("\nResult...\n",polycompanion(c))

出力結果

Our Array...
[1 2 3]

Dimensions of our Array...
1

Datatype of our Array object...
int64

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

Result...
[[ 0.         -0.33333333]
 [ 1.         -0.66666667]]

このように、係数配列 [1, 2, 3](つまり 1 + 2x + 3x² を表す)から、2×2 のコンパニオン行列が得られました。得られた行列の固有値を計算すると、元の多項式の根と一致することを確認できます。

  1. PythonでN次元配列の勾配を計算する方法|np.gradientの使い方を解説

    NumPyのnp.gradient()関数を使うと、N次元配列の勾配(数値微分)を簡単に求めることができます。この記事では、np.gradientの基本的な仕組みと具体的な使い方を、サンプルコード付きでわかりやすく解説します。np.gradientの勾配計算の仕組み勾配は、配列の内部点では2次精度の中心差分を用いて計算され、境界部分では1次または2次精度の片側差分(前方差分または後方差分)が使用されます。そのため、返される勾配は入力配列と同じ形状になります。主なパラメータnp.gradientには以下のパラメータがあります。第1パラメータ(f):スカラー関数のサンプル値を含むN次元配列を指定し

  2. Python NumPyのlinalg.norm()で行列・ベクトルのノルムを計算する方法

    線形代数において行列またはベクトルのノルム(Norm)を返すには、Python NumPyのnumpy.linalg.norm()メソッドを使用します。この記事では、LA.norm()メソッドの基本的な使い方と各パラメータの意味を、実際のコード例とともにわかりやすく解説します。numpy.linalg.norm()メソッドのパラメータ第1引数:xノルムを計算する対象となる入力配列です。axisがNoneの場合、xは1次元または2次元である必要があります(ordがNoneの場合を除く)。axisとordがどちらもNoneの場合は、x.ravel()の2-ノルムが返されます。第2引数:ordノルム