MATLAB で固有値と固有ベクトルをマスターする:実践ガイド
固有値と固有ベクトルは線形代数の基本概念であり、物理学、工学、データ分析などのさまざまな分野で広く使用されています。 MATLAB では、これらの概念を簡単に調べて計算できます。
EigenValues とは何ですか?
固有値は、ベクトル空間の線形変換に関連付けられた (ラムダ) で示されるスカラーです。これは、変換中に対応する固有ベクトルがスケーリングされる係数を表します。
EigenVector とは何ですか?
固有ベクトルは、線形変換が適用されたときにスカラー係数だけ変化する非ゼロ ベクトルです。言い換えれば、A が行列の場合、v は固有値に対応する A の固有ベクトルです。 −
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) は、A の固有値を含む対角行列 D と、列が対応する固有ベクトルである行列 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 の乗算は、W の転置と B の D の乗算と同じであることを意味します。
一般化固有値問題は、方程式 Av =Bv の解を見つけることに関するものです。ここで、A と B は正方行列、v は列ベクトル、およびスカラーです。この方程式を満たす値は一般化固有値であり、v 値は対応する右固有ベクトルです。左の固有ベクトル w は、方程式 w'A =w'B を満たします。
[___] =eig(A, BalanceOption) (balanceOption が「nobalance」である場合) は、アルゴリズムの予備的なバランシング ステップをオフにします。デフォルトでは、balanceOption は「balance」で、バランスをオンにします。 eig 関数は、前の例で説明した出力引数のいずれかを返すことができます。
[___] =eig(A,B,algorithm) (アルゴリズムは「chol」) は、B のコレスキー分解を使用して一般化された固有値を計算します。デフォルトのアルゴリズムは A と B のプロパティによって異なりますが、A または B が対称でない場合は「qz」(QZ アルゴリズム)になります。
[___] =eig(___,outputForm) は、前述の入力引数または出力引数のいずれかを使用して、outputForm で指定された形式で固有値を返します。列ベクトルで固有値を取得するには、outputForm を「vector」に設定し、対角行列で固有値を取得するには、「matrix」に設定します。
Matlab 関数 eig() の例
以下に、その使用方法を説明するためのいくつかの例を示します -
例 1:e =eig(A) を使用して固有値を計算する
MATLAB では、関数 eig を使用して行列 A の固有値を見つけることができます。次のコードを考えてみましょう-
% Define the matrix A A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; % Compute the eigenvalues e = eig(A)
上の例では -
- 行列 A は、次のようなエントリを持つ 3x3 行列として定義されます。
- eig(A) 関数は行列 A の固有値を計算します。
- eig(A) の結果は、A の固有値を含む列ベクトルである変数 e に格納されます。
コードが計算されると、得られる出力は次のとおりです-
>> % Define the matrix A A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; % Compute the eigenvalues e = eig(A) e = 16.1168 -1.1168 -0.0000
例 2:[V,D] =eig(A) を使用して eigenValues と eigenVectors を取得する
MATLAB では、関数 eig を使用して行列 A の固有値と固有ベクトルを見つけることができます。
次のコードを検討してください-
% Define the matrix A
A = [2, -1;
4, 3];
% Compute the eigenvalues and eigenvectors
[V, D] = eig(A);
% Display the eigenvalues
disp('Eigenvalues:');
disp(D);
% Display the eigenvectors
disp('Eigenvectors:');
disp(V);
上記のコードには-
があります。- 行列 A は、次のようなエントリを持つ 2x2 行列として定義されます。
- [V, D] =eig(A) 関数は、行列 A の固有値 (D) と対応する固有ベクトル (V) の両方を計算します。
- D は、A の固有値を含む対角行列です。
- V は、列が対応する固有ベクトルである行列です。
コードが実行されると、得られる出力は次のとおりです-
>> % Define the matrix A
A = [2, -1;
4, 3];
% Compute the eigenvalues and eigenvectors
[V, D] = eig(A);
% Display the eigenvalues
disp('Eigenvalues:');
disp(D);
% Display the eigenvectors
disp('Eigenvectors:');
disp(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