MATLAB に基づく固有値と固有ベクトル (完全なコード付き)

目次

1. 一般行列の固有値と固有ベクトル

例1

2. 一般化固有ベクトル問題

例 2

3. 疎行列の最大固有値

例 3


1. 一般行列の固有値と固有ベクトル

A は n 次の行列です。数値\ラムダとベクトル x が を満たす場合斧=\ラムダx、その数値は\ラムダA の固有値と呼ばれ、x は固有値に対応する A\ラムダ固有ベクトルと呼ばれます。この式を のように書き直すと(A-\ラムダ E)x=0|A-\ラムダ E|A特性多項式と呼ばれます。

MATLAB では、固有値と固有ベクトルは次の形式で計算されます。

[V,D]=eig(A)

備考: この関数は数量のみを要求することもできます。

例1

2 つの方法を使用して行列 A の固有値と固有ベクトルを見つけ、その対応するノルム誤差を検証します。

A=\begin{bmatrix}16&2&3&13\\ 5&11&10&8\\ 9&7&6&12\\ 4&14&15&1\\ \end{}

ほどく:

MATLAB コードは次のとおりです。

clc;clear;
A=[16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];

%直接求解
[v,d]=eig(A)
norm1=norm(A*v-v*d)

%解析解
[v,d]=eig(sym(A))
norm2=norm(double(A*v(:,2)-34*v(:,2))) %double函数转换为双精度类型

操作結果:

v =

   -0.5000 -0.8236 0.3764 -0.2236
   -0.5000 0.4236 0.0236 -0.6708
   -0.5000 0.0236 0.4236 0.6708
   -0.5000 0.3764 -0.8236 0.2236


d =

   34.0000 0 0 0
         0 8.9443 0
         0 0 0 -8.9443 0
         0 0 0 -0.0000


ノルム1 =1.2284e-14

 
v =
[ -1, 1, (12*5^(1/2))/31 - 41/31, - (12*5^(1/2))/31 - 41/31] [ -3,
1 , 17/31 - (8*5^(1/2))/31, (8*5^(1/2))/31 + 17/31] [ 3, 1, - (4*5^(
1 /2))/31 - 7/31, (4*5^(1/2))/31 - 7/31]
[ 1, 1, 1, 1]
 
 
d =
[ 0, 0, 0, 0]
[ 0、34、0、0]
[0、0、-4*5^(1/2)、0]
[0、0、0、4*5^(1/2)]
 

ノルム2 =0

2. 一般化固有ベクトル問題

一般化された固有ベクトルの式は次のとおりです。

Ax=\ラムダ Bx

上式で B=I の場合、通常の行列固有値問題になります。一般化固有値と固有ベクトルを解くための MATLAB 形式は次のとおりです。

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

残念ながら、Symbolic Operations Toolbox の eig() 関数は、一般化固有値の相関演算をサポートしていません。

例 2

A と B の一般化固有値行列と固有ベクトル行列を求めます。

A=\begin{bmatrix}5&7&6&5\\ 7&10&8&7\\ 6&8&10&9\\ 5&7&9&10\\ \end{}A=\begin{bmatrix}2&6&-1&-2\\ 5&-1&2&3\\ -3&-4&1&10\\ 5&-2&-3&8\\ \end{}

ほどく:

MATLAB コードは次のとおりです。

clc;clear;
A=[5 7 6 5;7 10 8 7;6 8 10 9;5 7 9 10];
B=[2 6 -1 -2;5 -1 2 3;-3 -4 1 10;5 -2 -3 8];
[V,D]=eig(A,B)

norm(A*V-B*V*D)

操作結果:

V =

   0.3697 + 0.0000i -0.3741 + 0.6259i -0.3741 - 0.6259i 1.0000 + 0.0000i
   0.9948 + 0.0000i -0.0674 - 0.2531i -0.0674 + 0.2531i -0.6090 + 0 .0000i 0.7979 + 0.0000i 0.9239 + 0.0264i
   0.9239 - 0.0264i - 0.2316 + 0.0000i
   1.0000 + 0.0000i -0.6599 - 0.3263i -0.6599 + 0.3263i 0.1319 + 0.0000i


D =

   4.7564 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
   0.0471 + 0.1750i 0.0000 + 0.0000i 0.0000 + 0 .0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
   0.0471 - 0.1750i 0.0000 + 0.0000i 0.0000
   + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i -0.0037 + 0.0000i


答え =

   3.3761e-14

3. 疎行列の最大固有値

スパース行列の k 係数の最大固有値を計算します。MATLAB 形式は次のとおりです。

d=eigs(A,k)

最大の固有値と固有ベクトルを同時に計算します。MATLAB の形式は次のとおりです。

[V,D]=eigs()

例 3

関数 delsq および nuggrid を使用して疎行列を生成し、疎行列の 6 つの法最大固有値を見つけて、この方法の誤差を分析します。

ほどく:

MATLAB コードは次のとおりです。

clc;clear;
A=delsq(numgrid('C',15));
%生成稀疏矩阵,这个稀疏矩阵有点复杂,感兴趣的小伙伴可自行查找下 delsq和numgrid函数
[v,d]=eigs(A,6) %6代表6个模
norm=norm(A*v-v*d)

操作結果:

d =

    7.8666 0 0 0 0 0
         0 7.7324 0
         0 0 0 0 0 7.6531 0 0 0
         0 0 0 7.5213 0 0
         0 0 0 0 7.4480 0
         0 0 0 0 0 7.3517


ノルム =

   1.4182e-14
固有ベクトルの結果はさらに長くなりますが、ここでは一部のみを示します。

 

おすすめ

転載: blog.csdn.net/forest_LL/article/details/124287078