Main Content

poly

指定された根をもつ多項式または特性多項式

説明

p = poly(r) は、r がベクトルのとき、その根が r の要素である多項式の係数を返します。

p = poly(A) は、Ann 列の行列である場合、行列の特性多項式 det(λI – A) の n+1 個の係数を返します。

すべて折りたたむ

行列 A の固有値を計算します。

A = [1 8 -10; -4 2 4; -5 2 8]
A = 3×3

     1     8   -10
    -4     2     4
    -5     2     8

e = eig(A)
e = 3×1 complex

  11.6219 + 0.0000i
  -0.3110 + 2.6704i
  -0.3110 - 2.6704i

e の固有値は A の特性多項式の根であるため、e の値から特性多項式を求めるには poly を使用します。

p = poly(e)
p = 1×4

    1.0000  -11.0000   -0.0000  -84.0000

poly を使用して、行列 A の特性多項式を計算します。

A = [1 2 3; 4 5 6; 7 8 0]
A = 3×3

     1     2     3
     4     5     6
     7     8     0

p = poly(A)
p = 1×4

    1.0000   -6.0000  -72.0000  -27.0000

roots を使用して p の根を計算します。特性多項式の根は行列 A の固有値です。

r = roots(p)
r = 3×1

   12.1229
   -5.7345
   -0.3884

入力引数

すべて折りたたむ

多項式の根。ベクトルとして指定します。

例: poly([2 -3])

例: poly([2 -2 3 -3])

例: poly(roots(k))

例: poly(eig(A))

データ型: single | double
複素数のサポート: あり

入力行列。

例: poly([0 -1; 1 0])

データ型: single | double
複素数のサポート: あり

出力引数

すべて折りたたむ

多項式係数。行ベクトルとして返されます。

  • 入力が nn 列の正方行列 A である場合、p には A の特性多項式の係数が含まれます。

  • 入力が根のベクトル r である場合、p にはその根が r に含まれる多項式の係数が含まれます。

いずれの場合も p 内の n+1 個の係数により次の多項式が記述されます。

p1xn+p2xn1+...+pnx+pn+1.

ヒント

  • ベクトルの場合、関数 r = roots(p) と関数 p = poly(r) は、丸め誤差、順序、スケーリングを除けば互いの逆となる関数です。

アルゴリズム

関数 poly と関数 roots で使用されているアルゴリズムは、固有値計算に関する最新のアプローチを使っています。poly(A) は、A の特性多項式を作成し、roots(poly(A)) は、その多項式の根を計算します。この根は、A の固有値になります。関数 poly と関数 roots は、共に相似変換をベースにした eig を使っています。特性多項式の根として、固有値を特徴付ける古典的なアプローチは、実際には使われていません。

A が、nn 列の行列である場合、poly(A) は、係数 p(1) から p(n+1) までを作成します。ここで、以下の関係において、p(1) = 1 とします。

det(λIA)=p1λn++pnλ+pn+1.

アルゴリズムは以下になります。

z = eig(A);
p = zeros(n+1,1); 
p(1) = 1;
for j = 1:n
    p(2:j+1) = p(2:j+1)-z(j)*p(1:j);
end

この漸化式は、積を拡張することにより導出できます。

(λλ1)(λλ2)(λλn).

A の丸め誤差内で、poly(A) が行列の特性多項式の係数を作成することを証明することができます。これは、A の固有値が悪条件のときでも真になります。特性多項式を求めるための従来のアルゴリズムは固有値を使わず、このような条件を満たす数値的な特性をもっていません。

拡張機能

バージョン履歴

R2006a より前に導入