主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

eig

固有値と固有ベクトル

説明

E=eig(A.)は、正方行列A.の固有値を含む列ベクトルを返します。

[v,D]=eig(A.)は、固有値からなる対角行列Dと,対応する右固有ベクトルを列にもつ行列v(つまり* V = V * D) を返します。

[v,D,W]=eig(A.)は、対応する左固有ベクトルを列にもつ非スパース行列W(つまりW * = D * W的)も返します。

固有値問題は、方程式 Av=λvの解を求めるものです。ここで、A.はNN列の行列,vは長さNの列ベクトル、λ はスカラーです。この方程式を満たす λ の値は固有値です。この方程式を満たす vに相当する値が右固有ベクトルになります。左固有ベクトル Wは式 w'A=λw'を満たします。

E=eig(A.,B)は、正方行列A.およびBの一般化固有値を含む列ベクトルを返します。

[v,D]=eig(A.,B)は、一般化固有値からなる対角行列Dと、対応する右固有ベクトルを列にもつ非スパース行列v(つまりA*V=B*V*D) を返します。

[v,D,W]=eig(A.,B)は、対応する左固有ベクトルを列にもつ非スパース行列W(つまりW W * = D *的* B)も返します。

一般化固有値問題は,方程式Av =λBvの解を求めるものです。ここで,およはびBNN列の行列,vは長さNの列ベクトル、λ はスカラーです。この方程式を満たす λ の値は一般化固有値です。vに相当する値が、一般化右固有ベクトルになります。左固有ベクトル Wは式 w'A=λw'Bを満たします。

[___]=eig(A.,平衡期权)は、平衡期权“nobalance”の場合にアルゴリズム内の事前のバランス化手順を無効にします。平衡期权の既定値は“平衡”であり,バランス化を有効にします。関数eigは,前述の構文の出力引数のいずれでも返すことができます。

[___]=eig(A.,B,算法)は、算法“乔”の場合にBのコレスキー分解を使用して一般化固有値を計算します。算法の既定値はA.およびBのプロパティによって異なりますが,通常は求アルゴリズムを使用する“qz”です。

A.がエルミートであり,かつBがエルミート正定値である場合、算法の既定値は“乔”です。

[___]=eig(___,eigvalOption)は、前述の構文の任意の入力引数または出力引数を使用して、eigvalOptionで指定された形式で固有値を返します。eigvalOptionには、固有値を列ベクトルとして返す場合は“向量”,固有値を対角行列として返す場合は“矩阵”を指定します。

すべて折りたたむ

画廊を使用して対称正定値行列を作成します。

A=画廊(“莱默”,4)
A=4×41.0000 0.5000 0.3333 0.2500 0.5000 1.0000 0.6667 0.5000 0.3333 0.6667 1.0000 0.7500 0.2500 0.5000 0.7500 1.0000

A.の固有値を計算します。結果は列ベクトルになります。

e=eig(A)
e=4×10.2078 0.4078 0.8482 2.5362

あるいは、eigvalOptionを使用して固有値を対角行列に返します。

D=eig(A,“矩阵”)
D=4×40.2078 0 0 0 0 0.4078 0 0 0 0 0.8482 0 0 0 0 2.5362

画廊を使用して、循環行列を作成します。

A=画廊(“circul”,3)
A=3×31 2 3 3 1 2 2 3 1

A.の固有値と右固有ベクトルを計算します。

[V,D]=环境影响评价(A)
V =3×3复杂-0.5774 + 0.00000 i -0.5774 + 0.00000 i -0.5774 + 0.00000 i -0.2887 + 0.5000i -0.2887 - 0.5000i
D=3×3复杂6.0000+0.0000i 0.0000+0.0000i 0.0000+0.0000i 0.0000+0.0000i-1.5000+0.8660i 0.0000+0.0000i 0.0000+0.0000i 0.0000+0.0000i-1.5000-0.8660i

結果が* V = V * Dを満たすことを確認します。

A*V-V*D
ans=3×3复杂10-14年× -0.2220 + 0.00000 i -0.0888 - 0.0111i -0.0888 + 0.0111i -0.0888 + 0.00000 i - 0.0833i -0.0444 + 0.00000 i -0.1110 + 0.0666i -0.1110 - 0.0666i

理論上は,固有値分解はこの関係を満たします。eigは浮動小数点計算を使用して分解を行うため,A*VV*Dにほぼ等しい程度にしかなりません。言い換えると、A*V-V*D0に近づきますが,厳密に等しくはなりません。

既定では、eigは固有値と固有ベクトルを常に並べ替えられた順序で返すとは限りません。関数排序を使用して、固有値を昇順に並べて、対応する固有ベクトルを並べ替えます。

5行5列の魔方陣行列の固有値と固有ベクトルを計算します。

=魔法(5)
A=5×517 24 18 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
[V,D]=环境影响评价(A)
V =5×5-0.4472 0.0976 -0.6330 0.6780 -0.2619 -0.4472 0.3525 0.5895 0.3223 -0.1732 -0.4472 0.5501 -0.3915 -0.5501 0.3915 -0.4472 -0.3223 0.1732 -0.3525 -0.5895 -0.4472 -0.6780 0.2619 -0.0976 0.6330
D=5×560.000 0000 0 -21.2768 0000 -13.1263 000

A.の固有値はDの対角上にあります。ただし、固有値は並べ替えられていません。

诊断接头(D)を使用してDの対角から固有値を抽出してから、結果のベクトルを昇順に並べ替えます。排序の 2.番目の出力はインデックスの置換ベクトルを返します。

位于[d] =排序(诊断接头(d))
d=5×1-21.2768 -13.1263 13.1263 21.2768 65.0000
印第安纳州=5×12 3 5 4 1

indを使用してDの対角要素を並べ替えます。Dの固有値はvの列内の固有ベクトルに対応するため,同じインデックスを使用してvの列も並べ替えなければなりません。

Ds=D(ind,ind)
Ds=5×5-21.2768 0 0 0 0 0 -13.1263 0 0 0 0 0 13.1263 0 0 0 0 0 21.2768 0 0 0 0 0 65.0000
Vs=V(:,ind)
Vs=5×50.0976 -0.6330 -0.2619 0.6780 -0.4472 0.3525 0.5895 -0.1732 0.3223 -0.4472 0.5501 -0.3915 0.3915 -0.5501 -0.4472 -0.3223 0.1732 -0.5895 -0.3525 -0.4472 -0.6780 0.2619 0.6330 -0.0976 -0.4472

(五、四)(Vs,Ds)はいずれもA.の固有値分解を出力します。A*V-V*D* Vs-Vs * Dsの結果は丸め誤差を除けば一致します。

e1 =规范(* V-V * D);e2 =规范(* Vs-Vs * Ds);E = abs(e1 - e2)
e=1.2622e-29

3行3列の行列を作成します。

A=[1 7 3;2 9 12;5 22 7];

右固有ベクトルv、固有値D,および左固有ベクトルWを計算します。

[V,D,W]=eig(A)
V =3×30.2610 -0.9734 0.1891 -0.5870 0.2281 -0.5816 -0.7663 -0.0198 0.7912
D=3×325.5548 0 0 0 -0.5789 0 0 0 -7.9759
W =3×3-0.1791 -0.9587 -0.1881 -0.8127 0.0649 -0.7477 -0.5545 0.2768 0.6368

結果がW * = D * W的を満たすことを確認します。

W'*A-D*W'
ans=3×310-13年× -0.0266 -0.2132 -0.1243 0.0056 -0.0286 -0.0072 -0.0022 0 -0.0178

理論上は,固有値分解はこの関係を満たします。eigは浮動小数点計算を使用して分解を行うため,W'*AD*W'にほぼ等しい程度にしかなりません。言い換えると、W'*A-D*W'0に近づきますが,厳密に等しくはなりません。

3行3列の行列を作成します。

A = [3 10 0;0 3 1;0 0 3];

A.の固有値と右固有ベクトルを計算します。

[V,D]=环境影响评价(A)
V =3×31.0000 -1.0000 1.0000 0 0.0000 -0.0000 0 0 0.0000
D=3×33 0 0 0 3 0 0

A.は反復固有値をもち,固有ベクトルは独立していません。つまり,A.は対角化できず、したがって不完全であるということです。

A.が不完全であっても、vDが方程式* V = V * Dを満たすことを確認します。

A*V-V*D
ans=3×310-15× 0 0.8882 -0.8882 0 0 0.0000 0 0 0

理論上は,固有値分解はこの関係を満たします。eigは浮動小数点計算を使用して分解を行うため,A*VV*Dにほぼ等しい程度にしかなりません。言い換えると、A*V-V*D0に近づきますが,厳密に等しくはなりません。

2.つの行列A.Bを作成して,ペア(A、B)の固有値と右固有ベクトルの一般化固有値問題を解きます。

A =[1/根号(2)0;0 1];B = [0 1;1 /√(2)0];[V D] = eig (A, B)
V =2×2复杂1.0000+0.0000i 1.0000+0.0000i 0.0000-0.7071i 0.0000+0.7071i
D=2×2复杂1.000 + 1.000 i + 0.000 i + 0.000 i + 0.000 i + 0.000 i

結果がA*V=B*V*Dを満たすことを確認します。

* V - B * * D
ans=2×20 0 0 0

残差誤差* V - B * * Dは厳密に0になります。

マシンの精度に近い値を含む,悪条件の対称行列を作成します。

总体安排EA = diag([10^-16, 10^-15])
A=2×21.000000000000000e-16 0 0 1.000000000000000e-15

既定のアルゴリズムを使用して,一般化固有値と一連の右固有ベクトルを計算します。この場合,既定のアルゴリズムは“乔”です。

[V1,D1]=eig(A,A)
V1=2×21.000000000000000e+08 00 3.162277660168380e+07
D1=2×29.999999999999E-01 0 0 1.000000000000000 E+00

ここで、“qz”アルゴリズムを使用して、一般化固有値と一連の右固有ベクトルを計算します。

[V2,D2]=eig(A,A,“qz”)
V2=2×21 0 0 1
D2=2×21 0 0 1

“乔”の結果がA*V1=A*V1*D1をどの程度満たすかをチェックします。

总体安排A*V1-A*V1*D1
ans=2×210-23× 0.1654 0 0 -0.6617

次に“qz”の結果がA*V2=A*V2*D2をどの程度満たすかをチェックします。

* V2 - * V2 * D2
ans=2×20 0 0 0

両方とも対称行列である場合、eigは既定で“乔”アルゴリズムを使用します。この場合,求出アルゴリズムがより正確な結果を返します。

2.行 2.列の単位行列A.と、特異行列Bを作成します。

一个=眼(2);B = [3 6;4 8];

コマンド[V,D]=eig(B\A)を使用して行列 B - 1. A. の一般化固有値を計算しようとすると、B \Inf値を出力するためMATLAB®はエラーを返します。

代わりに、関数eigに両方の行列を渡して、一般化固有値と右固有ベクトルを計算します。

[V D] = eig (A, B)
V =2×2-0.7500 -1.0000 -1.0000 0.5000
D=2×20.0909 0 0 Inf

両方の行列を別々に渡し、問題の求解に最適なアルゴリズムをeigに選択させるほうがよい結果になります。この例で、环境影响评估(A、B)は、Bが可逆でなくても、一連の固有ベクトルと少なくとも 1.つの実数固有値を返します。

最初の固有値と最初の固有ベクトルについて A. v = λ B v であることを確認します。

eigval=D(1,1);eigvec=V(:,1);A*eigvec-eigval*B*eigvec
ans=2×110-15×0.1110 - 0.2220

理論上は、固有値分解はこの関係を満たします。浮動小数点計算を使用して分解が行われるため、A * eigvecは、この例で計算されたとおり、eigval * B * eigvecにほぼ等しい程度にしかなりません。

入力引数

すべて折りたたむ

入力行列。実数正方行列または複素正方行列として指定します。

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

一般化固有値問題の入力行列。実数または複素数の値からなる正方行列として指定します。BA.と同じサイズでなければなりません。

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

バランスオプション。事前のバランス化手順を有効にする“平衡”、あるいは無効にする“nobalance”として指定します。ほとんどの場合,バランス化手順によってA.の条件付けは改善され,より正確な結果が得られるようになります。ただし,バランス化によって不正確な結果が生じる場合があります。A.にスケールが著しく異なる値が含まれる場合は“nobalance”を指定します。たとえば、A.に非ゼロの整数の他に,ごく小さい(ゼロに近い)値も含む場合,バランス化手順では,小さい値をスケーリングして整数と同じ意味をもたせる場合があり,不正確な結果が生じることがあります。

“平衡”は既定の動作です。バランス化の詳細については、均衡を参照してください。

一般化固有値アルゴリズム。“乔”または“qz”を指定して,ペアの一般化固有値の計算に使用するアルゴリズムを選択します。

アルゴリズム 説明
“乔” Bのコレスキー分解を使って、A.Bの一般化固有値を計算します。
“qz” 一般化 舒尔分解とも呼ばれる QZアルゴリズムを使用します。このアルゴリズムはA.およびBの対称性を無視します。

一般に、この 2.つのアルゴリズムは同じ結果を返します。QZアルゴリズムは、悪条件の行列を伴うような特定の問題に対してより安定しています。

算法引数を省略すると,関数eigは、A.Bのプロパティに基づいてアルゴリズムを選択します。この関数は、対称 (エルミート)A.と対称(エルミート)正定値Bに対しては,“乔”アルゴリズムを使用します。それ以外については“qz”アルゴリズムを使用します。

A.またはBが非対称の場合は、指定するアルゴリズムにかかわらず、関数eigは常に QZアルゴリズムを使用します。

固有値のオプション。“向量”または“矩阵”として指定します。このオプションにより、固有値を列ベクトルまたは対角行列のいずれで返すかが指定できます。既定の動作は、指定された出力の数により異なります。

  • e=eig(A)のように出力を 1.つ指定する場合、既定では、固有値は列ベクトルとして返されます。

  • [V,D]=环境影响评价(A)のように 2.つまたは 3.つの出力を指定する場合、既定では、固有値は対角行列Dとして返されます。

例:D = eig (A,“矩阵”)は、1.つの出力構文により固有値の対角行列を返します。

出力引数

すべて折りたたむ

固有値。多重度をもつ固有値 (またはペアの一般化固有値) を含む列ベクトルとして返されます。各固有値e(k)は右固有ベクトルV(:,k)と左固有ベクトルW(:,k)に対応します。

右固有ベクトル。A.の右固有ベクトルまたはペア(A、B)の一般化右固有ベクトルを列にもつ正方行列として返されます。vの形式と正規化は、入力引数の組み合わせによって異なります。

  • [V,D]=环境影响评价(A)は、* V = V * Dとなるような,A.の右固有ベクトルを列にもつ行列vを返します。vの固有ベクトルは、個々の 2.ノルムが 1.となるように正規化されます。

    A.が実対称エルミートまたは歪エルミートの場合、右固有ベクトルvは正規直交になります。

  • [V,D]=eig(A,'nobalance')は,行列vも返します。ただし,各固有ベクトルの 2 ノルムは必ずしも 1 である必要はありません。

  • [V D] = eig (A, B)および[V,D]=eig(A,B,算法)は、A*V=B*V*Dを満たす一般化右固有ベクトルを列にもつ行列としてvを返します。各固有ベクトルの 2.ノルムは必ずしも 1.である必要はありません。この場合、Dには、主対角に沿ってペアの一般化固有値(A、B)が含まれます。

    eig“乔”アルゴリズムと対称(エルミート)行列A.および対称 (エルミート) 正定値Bを使用する場合、vの固有ベクトルは、個々のBノルムが1になるように正規化されます。

マシンやMATLAB®のリリースが異なる場合,異なる固有ベクトルが出力されることがありますが,数値的にはいずれも正確です。

  • 実数固有ベクトルでは,固有ベクトルの符号を変更できます。

  • 複素数固有ベクトルでは、絶対値が 1.の任意の複素数を固有ベクトルに乗算できます。

  • 重複固有値では,その固有ベクトルを線形結合によって再結合できます。たとえば,Ax=λxかつAy=λyの場合、A(x+y)=λ(x+y)であるため、x+yも A.の固有ベクトルです。

固有値。A.の固有値が主対角にある対角行列、あるいはペア(A、B)の多重度をもつ固有値が主対角にある対角行列として返されます。各固有値D (k, k)は右固有ベクトルV(:,k)と左固有ベクトルW(:,k)に対応します。

左固有ベクトル。A.の左固有ベクトルまたはペア(A、B)の一般化左固有ベクトルを列にもつ正方行列として返されます。Wの形式と正規化は、入力引数の組み合わせによって異なります。

  • [V,D,W]=eig(A)は、W * = D * W的となるような,A.の左固有ベクトルを列にもつ行列Wを返します。Wの固有ベクトルは、個々の 2.ノルムが 1.となるように正規化されます。A.対称の場合、Wvと同じになります。

  • [V,D,W]=eig(A,'nobalance')は,行列Wも返します。ただし,各固有ベクトルの 2 ノルムは必ずしも 1 である必要はありません。

  • [V D W] = eig (A, B)および[V D W] = eig (A, B,算法)は、W W * = D *的* Bを満たす一般化左固有ベクトルを列にもつ行列としてWを返します。各固有ベクトルの 2.ノルムは必ずしも 1.である必要はありません。この場合、Dには、主対角に沿ってペアの一般化固有値(A、B)が含まれます。

    A.B対称の場合、Wvと同じになります。

マシンや MATLABのリリースが異なる場合、異なる固有ベクトルが出力されることがありますが、数値的にはいずれも正確です。

  • 実数固有ベクトルでは,固有ベクトルの符号を変更できます。

  • 複素数固有ベクトルでは、絶対値が 1.の任意の複素数を固有ベクトルに乗算できます。

  • 重複固有値では,その固有ベクトルを線形結合によって再結合できます。たとえば,Ax=λxかつAy=λyの場合、A(x+y)=λ(x+y)であるため、x+yも A.の固有ベクトルです。

詳細

すべて折りたたむ

対称行列

  • 非共役転置一个=。に等しい場合,正方行列A.は対称行列です。

    行列要素では、これは次を意味します。

    A. , J = A. J , .

  • 実数行列は複素共役に影響されないので,対称な実数行列もエルミート行列になります。例として,行列

    A. = [ 1. 0 0 2. 1. 0 1. 0 1. ]

    は対称行列であると同時にエルミート行列でもあります。

歪対称行列

  • 非共役転置の打ち消しA=-A.'に等しい場合,正方行列A.は歪対称行列です。

    行列要素では、これは次を意味します。

    A. , J = A. J , .

  • 実数行列は複素共役に影響されないので,歪対称な実数行列も歪エルミート行列になります。例として,行列

    A. = [ 0 1. 1. 0 ]

    は歪対称行列であると同時に歪エルミート行列でもあります。

エルミート行列

  • 複素共役転置A=A'に等しい場合,正方行列A.はエルミート行列です。

    行列要素では、これは次を意味します。

    A. , J = A. ¯ J , .

  • エルミート行列の対角のエントリは常に実数です。実数行列は複素共役に影響されないので、対称な実数行列もエルミート行列になります。例として、行列

    A. = [ 1. 0 0 2. 1. 0 1. 0 1. ]

    は対称行列であると同時にエルミート行列でもあります。

  • エルミート行列の固有値は実数です。

歪エルミート行列

  • 複素共役転置の打ち消しA=-A'に等しい場合,正方行列A.は歪エルミート行列です。

    行列要素では、これは次を意味します。

    A. , J = A. ¯ J , .

  • 歪エルミート行列の対角のエントリは常に純粋な虚数かゼロです。実数行列は複素共役に影響されないので,歪対称な実数行列も歪エルミート行列になります。例として,行列

    A. = [ 0 1. 1. 0 ]

    は歪エルミート行列であると同時に歪対称行列でもあります。

  • 歪エルミート行列の固有値は純粋な虚数かゼロです。

ヒント

  • 関数eigは、実対称であるスパース行列の固有値を計算できます。スパース行列の固有ベクトルや、実対称でないスパース行列の固有値を計算するには、関数EIGを使用します。

拡張機能

R2006aより前に導入