Main Content

eig

シンボリック行列の固有値と固有ベクトル

説明

lambda = eig(A) は、シンボリック正方行列 A の固有値をシンボリック ベクトルとして返します。

[V,D] = eig(A) は、A の固有ベクトルと固有値をシンボリック行列 V および D として返します。V の列は A の固有ベクトルを表します。D の主対角は、A の固有値を表します。

  • VA と同じサイズの場合、行列 AA*V = V*D を満たす線形独立な固有ベクトルの完全集合をもちます。

  • V の列が A の列より少ない場合、行列 A は欠陥があります。この場合、固有値 λ の少なくとも 1 つが、λ に関連する m 個未満の線形独立な固有ベクトルとの間で代数的多重度 m > 1 があります。

[V,D,p] = eig(A) は、インデックスのベクトル p も返します。p の長さは、線形独立な固有ベクトルの数に等しくなります。したがって、A*V = V*D(p,p) となります。

すべて折りたたむ

5 次の魔方陣の固有値を計算します。

A = sym(magic(5));
lambda = eig(A)
lambda = 

(656252-531452531452+6252-6252-531452-531452+6252)

可変精度の演算を使用して 5 次の魔方陣行列の数値としての固有値を計算します。

A = magic(5);
lambda = eig(vpa(A))
lambda = 

(65.021.27676547147379553062642669797413.126280930709218802525643085949-13.126280930709218802525643085949-21.276765471473795530626426697974)

6 次の魔方陣から 5 行 5 列のシンボリック行列を作成します。eig を使用して、行列の固有値を計算します。

M = magic(6);
A = sym(M(1:5,1:5));
lambda = eig(A)
lambda = 

(root(σ1,z,1)root(σ1,z,2)root(σ1,z,3)root(σ1,z,4)root(σ1,z,5))where  σ1=z5-100z4+134z3+66537z2-450198z-1294704

関数 eig では、シンボリック数で正確な固有値を求めることができません。代わりに、関数 root でそれらを返します。

vpa を使用して固有値を数値的に近似します。

lambdaVpa = vpa(lambda)
lambdaVpa = 

(-2.1810323649846951083546927010659.8395828502812312578803604206392-25.13164166979989160726758463919226.34161761027586903546571650580691.131473574227486422276200413812)

欠陥がある MATLAB® テスト行列の 1 つに対し、正確な固有値と固有ベクトルを計算します。

A = sym(gallery(5))
A = 

(-911-2163-25270-69141-4211684-575575-11493451-138013891-38917782-23345933651024-10242048-614424572)

[V,D] = eig(A)
V = 

(021256-711289732561)

D = 

(0000000000000000000000000)

出力 V は、5 分割の固有値が 0 となる 5 行 1 列のベクトルです。この結果は、行列 A が、代数的多重度が 5 で幾何学的多重度が 1 である値 0 の固有値をもつことを意味します。

4 行 4 列のシンボリック行列の正確な固有値と固有ベクトルを計算します。線形独立な固有ベクトルに固有値を関連付けるインデックスのベクトルを返します。

syms c
A = [c 1 0 0; 0 c 0 0; 0 0 3*c 0; 0 0 0 3*c];
[V,D,p] = eig(A)
V = 

(100000010001)

D = 

(c0000c00003c00003c)

p = 1×3

     1     3     4

行列 A は 2 つの固有値 c および 3 c をもち、各固有値が 2 回登場します。一方、線形独立な固有ベクトルが 3 つ存在します。インデックスのベクトル p は次を表します。

  • p(1) = 1。この場合、最初の固有ベクトル (V の最初の列) が、固有値 c をもつ D の最初の対角要素に対応します。

  • p(2) = 3。この場合、2 番目の固有ベクトル (V の 2 番目の列) が、固有値 3 c をもつ D の 3 番目の対角要素に対応します。

  • p(3) = 4。この場合、3 番目の固有ベクトル (V の 3 番目の列) が、固有値 3 c をもつ D の 4 番目の対角要素に対応します。

この結果は、2 回登場する固有値 c が線形独立な固有ベクトルを 1 つだけもつことを意味します (固有値 c は代数的多重度が 2 で幾何学的多重度が 1)。2 回登場する固有値 3 c は、線形独立な固有ベクトルを 2 つもちます (固有値 3 c は代数的多重度が 2 で幾何学的多重度が 2)。

行列 A*VV*D(p,p) と等価であることを示します。

A*V
ans = 

(c0000003c0003c)

V*D(p,p)
ans = 

(c0000003c0003c)

tf = isequal(A*V,V*D(p,p))
tf = logical
   1

入力引数

すべて折りたたむ

正方行列。シンボリック行列として指定します。

出力引数

すべて折りたたむ

固有値。シンボリック列ベクトル、またはシンボリック数の列ベクトルとして返されます。

右固有ベクトル。シンボリック正方行列として返されます。V の各列は A の右固有ベクトルです。

固有値。シンボリック対角行列として返されます。A の固有値は D の主対角上にあります。

インデックスのベクトル。シンボリック行ベクトルとして返されます。p の長さは、A の線形独立な固有ベクトルの合計数に等しくなります。

ヒント

  • 多くのシンボリック変数が含まれる行列計算は低速になる可能性があります。計算速度を向上させるには、特定の値を変数に代入することでシンボリック変数の数を減らします。

  • シンボリック オブジェクトではない数値行列 (symsyms または vpa により作成されていない行列) で eig を呼び出すと、MATLAB® 関数 eig が起動します。

  • シンボリック関数 eig は、(2 つの入力引数をもつ) 一般化固有値問題の求解をサポートしていません。一般化固有値問題を解くには、代わりに、入力行列を MATLAB の数値型に変換して MATLAB 関数 eig を使用します。

バージョン履歴

R2006a より前に導入

すべて展開する

参考

| | |

トピック