MATLABで固有値・固有ベクトルをマスター:実践ガイド
固有値と固有ベクトルは線形代数の基本概念であり、物理学、工学、データ分析などさまざまな分野で広く使用されています。MATLABでは、これらの概念を簡単に探索・計算できます。
固有値とは
固有値は、ベクトル空間の線形変換に関連するスカラーで、λ(ラムダ)で表されます。対応する固有ベクトルが変換時にスケーリングされる倍率を表します。
固有ベクトルとは
固有ベクトルは、線形変換を適用してもスカラー倍率だけで変化し、方向が変わらない非ゼロベクトルです。つまり、Aを行列、vを固有ベクトル、λを対応する固有値とすると、
Av = λv
が成り立ちます。ここで、Aは正方行列、vは固有ベクトル、λは固有値です。
MATLAB関数
MATLABは固有値と固有ベクトルを計算する組み込み関数を提供します。
eig関数の使用
この関数は行列の固有値と固有ベクトルを計算します。
構文
e = eig(A) [V,D] = eig(A) [V,D,W] = eig(A) e = eig(A,B) [V,D] = eig(A,B) [V,D,W] = eig(A,B) [___] = eig(A,balanceOption) [___] = eig(A,B,algorithm) [___] = eig(___,outputForm)
構文の説明
e = eig(A)— 正方行列Aの固有値を含む列ベクトルを返す。[V,D] = eig(A)— 対角行列DにAの固有値、行列Vの列に対応する固有ベクトルを返す。これは A*V = V*D が成り立つことを意味する。[V,D,W] = eig(A)— 左固有ベクトルを列とするフル行列Wも返す。W'*A = D*W' が成り立つ。- 固有値問題は Av = λv を満たす解を見つける問題。Aは正方行列、vは列ベクトル、λはスカラー。この方程式を満たすλが固有値、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'*A = D*W'*B が成り立つ。- 一般化固有値問題は Av = λBv の解を見つける問題。A, Bは正方行列、vは列ベクトル、λはスカラー。λが一般化固有値、vが右固有ベクトル。左固有ベクトルwは w'*A = λw'*B を満たす。
[___] = eig(A, balanceOption)— balanceOptionに"nobalance"を指定すると、アルゴリズムの事前バランシングステップを無効化。デフォルトは"balance"(バランシング有効)。前述の出力引数のいずれかを返せる。[___] = eig(A,B,algorithm)— algorithmに"chol"を指定すると、Bのコレスキー分解を使用して一般化固有値を計算。デフォルトアルゴリズムはA, Bの性質に依存するが、AまたはBが対称でない場合は"qz"(QZアルゴリズム)。[___] = eig(___,outputForm)— outputFormで指定した形式で固有値を返す。"vector"で列ベクトル、"matrix"で対角行列。
MATLAB eig()関数の例
例1:e = eig(A)で固有値を計算
% 行列Aを定義 A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; % 固有値を計算 e = eig(A)
- 行列Aを3×3行列として定義
eig(A)で行列Aの固有値を計算- 結果は変数e(列ベクトル)に格納
実行結果:
>> A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; e = eig(A) e = 16.1168 -1.1168 -0.0000
例2:[V,D] = eig(A)で固有値と固有ベクトルを取得
% 行列Aを定義 A = [2, -1; 4, 3]; % 固有値と固有ベクトルを計算 [V, D] = eig(A); % 固有値を表示 disp('Eigenvalues:'); disp(D); % 固有ベクトルを表示 disp('Eigenvectors:'); disp(V);
- 行列Aを2×2行列として定義
[V, D] = eig(A)で固有値(D)と対応する固有ベクトル(V)を計算- Dは固有値を含む対角行列
- Vは対応する固有ベクトルを列とする行列
実行結果:
Eigenvalues: 2.5000 + 1.9365i 0.0000 + 0.0000i 0.0000 + 0.0000i 2.5000 - 1.9365i Eigenvectors: -0.1118 + 0.4330i -0.1118 - 0.4330i 0.8944 + 0.0000i 0.8944 + 0.0000i
MATLAB
- MATLAB関数:定義、ワークスペース、入出力
- MATLAB環境構築クイックガイド:インストールからIDE理解まで
- Simulink:MATLABの高度なシミュレーション&モデルベース設計ツール
- MATLAB:多次元配列と特殊配列をマスターする
- MATLAB:ラプラシアン・オブ・ガウシアン(LoG)フィルタによるエッジ検出
- MATLABデータ型完全ガイド:15種類の基本型と変換・判定関数
- MATLABの数値型:型、格納、変換
- MATLAB意思決定構造完全ガイド:if/else/switch文の使い方
- MATLABで固有値・固有ベクトルをマスター:実践ガイド
- MATLABでの多項式の理解:表現と評価
- MATLABループ完全ガイド:for/while/ネストループと制御文