Main Content

polyeig

説明

e = polyeig(A0,A1,...,Ap) は、次数が p多項式固有値問題の固有値を返します。

[X,e] = polyeig(A0,A1,...,Ap) は、行列 X も返します。この行列はサイズが nn*p 列で、各列が固有ベクトルです。

[X,e,s] = polyeig(A0,A1,...,Ap) は、固有値の条件数をもつ長さ p*n のベクトル s も返します。A0Ap がともに特異であってはなりません。大きな条件数は、問題が反復固有値問題に近いことを示します。

すべて折りたたむ

この例では質量行列 M、減衰行列 C および剛性行列 K がそれぞれ関連する二次の固有値問題を解きます。この二次固有値問題は、次の運動方程式から生じます。

Md2ydt2+Cdydt+Ky=f(t)

この方程式は動的マス-バネ システムや RLC 電子ネットワークといった広範にわたる振動システムに適用されます。基本的な解は y(t)=xeλt であり、λx の両方について二次固有値問題 (QEP) を解かなければなりません。

(Mλ2+Cλ+K)x=0

係数行列 MC および K を作成して、4 自由度のマス-バネ システムを表します。係数行列はすべて対称かつ半正定値であり、M は対角行列です。

M = diag([3 1 3 1])
M = 4×4

     3     0     0     0
     0     1     0     0
     0     0     3     0
     0     0     0     1

C = [0.4 0 -0.3 0; 0 0 0 0; -0.3 0 0.5 -0.2; 0 0 -0.2 0.2]
C = 4×4

    0.4000         0   -0.3000         0
         0         0         0         0
   -0.3000         0    0.5000   -0.2000
         0         0   -0.2000    0.2000

K = [-7 2 4  0; 2 -4 2 0; 4 2 -9 3; 0 0 3 -3]
K = 4×4

    -7     2     4     0
     2    -4     2     0
     4     2    -9     3
     0     0     3    -3

polyeig を使用して、固有値、固有ベクトルおよび条件数について QEP を解きます。

[X,e,s] = polyeig(K,C,M)
X = 4×8

   -0.1828    0.3421   -0.3989   -0.0621    0.3890   -0.4143    0.4575   -0.4563
   -0.3530   -0.9296   -0.3330    0.8571   -0.6366   -0.2717    0.4981   -0.4985
    0.5360   -0.0456    0.1724   -0.3509   -0.3423    0.1666    0.5106   -0.5107
   -0.7448    0.1295    0.8368    0.3720    0.5712    0.8525    0.5309   -0.5315

e = 8×1

   -2.4498
   -2.1536
   -1.6248
    2.2279
    2.0364
    1.4752
    0.3353
   -0.3466

s = 8×1

    0.5813
    0.8609
    1.2232
    0.7855
    0.7012
    1.2922
   10.1097
   10.0519

最初の固有値 e(1) および最初の固有ベクトル X(:,1) が QEP 方程式を満たすことをチェックします。結果はゼロに近づきますが、厳密にゼロではありません。

lambda = e(1);
x = X(:,1);
(M*lambda^2 + C*lambda + K)*x
ans = 4×1
10-13 ×

    0.0622
   -0.0444
   -0.1066
    0.0333

入力引数

すべて折りたたむ

正方係数行列。個別の引数として指定します。すべての行列が同じ次元 n でなければなりません。

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

出力引数

すべて折りたたむ

固有値。ベクトルとして返されます。

固有ベクトル。行列の列で返されます。最初の固有ベクトルは X(:,1)、2 番目の固有ベクトルは X(:,2)、というようになります。

条件数。ベクトルとして返されます。s の条件数は、e 内で同様の位置にある固有値に対応します。大きな条件数は、問題が反復固有値に近いことを示します。

詳細

すべて折りたたむ

多項式固有値問題

多項式固有値問題は、標準の固有値問題 Ax = λx のバリアントですが、線形項の代わりに多項式を使用します。

標準固有値問題と同様に、解を得るには次の方程式を満たす固有値と固有ベクトルを求めなければなりません。

(A0+λA1++λPAp)x=0,

ここで、多項式の次数 p は非負の整数で、A0,A1,...Apn 次元の正方係数行列です。

最も一般的な形式は二次多項式固有値問題で、次のようになります。

(A2λ2+A1λ+A0)x=0.

二次固有値問題と標準 (または一般化) 固有値問題の主な違いの 1 つは、固有値が最大 2n 個、左右の固有ベクトルが最大 2n 個存在する可能性があるという点です。固有ベクトルの数が n を超える場合、これらの固有ベクトルは線形に独立したセットを形成しません。二次固有値問題の詳細については、[1]および[2]を参照してください。

ヒント

  • polyeig は以下の簡略化されたケースを処理します。

    • p = 0 または polyeig(A) は、標準固有値問題で次と同じです: eig(A)

    • p = 1 または polyeig(A,B) は、一般化固有値問題で次と同じです: eig(A,-B)

    • n = 0 または polyeig(a0,a1,...,ap) は、標準多項式問題で次と同じです: roots([ap ... a1 a0])。ここで a0,a1,...,ap はスカラーです。

アルゴリズム

関数 polyeig は、一般化固有値の計算で中間結果を得るために、QZ 分解を使用します。polyeig は中間結果を使用して、固有値が適切に決定されるか判定します。詳細については、eigqz の説明を参照してください。

計算された解が存在しなかったり、固有でない可能性もあり、さらに計算が正確でない場合もあります。A0Ap がともに特異行列である場合、不良設定問題である可能性があります。A0Ap のどちらか一方のみが特異である場合、一部の固有値が 0 または Inf である可能性があります。

A0,A1,...,Ap をスケーリングして norm(Ai)1 にほぼ等しくすることで、polyeig の精度が向上する場合もあります。ただし、通常はこのような精度の向上は達成できません (詳細は Tisseur [3] を参照してください)。

参照

[1] Dedieu, Jean-Pierre, and Francoise Tisseur. “Perturbation theory for homogeneous polynomial eigenvalue problems.” Linear Algebra Appl. Vol. 358, 2003, pp. 71–94.

[2] Tisseur, Francoise, and Karl Meerbergen. “The quadratic eigenvalue problem.” SIAM Rev. Vol. 43, Number 2, 2001, pp. 235–286.

[3] Francoise Tisseur. “Backward error and condition of polynomial eigenvalue problems.” Linear Algebra Appl. Vol. 309, 2000, pp. 339–361.

拡張機能

バージョン履歴

R2006a より前に導入