Valores propios y vectores propios basados en MATLAB (con código completo)

Tabla de contenido

1. Los valores propios y vectores propios de una matriz general

Ejemplo 1

2. Problema de vector propio generalizado

Ejemplo 2

3. El valor propio más grande de una matriz dispersa

Ejemplo 3


1. Los valores propios y vectores propios de una matriz general

A es una matriz de orden n. Si el número \lambday el vector x satisfacen Ax=\lambda x, entonces el número se llama valor propio\lambda de A , y x se llama vector propio de A correspondiente al valor propio . Si la fórmula se reescribe como , entonces se llama polinomio característico de A.\lambda(A-\lambda E)x=0|A-\lambda E|

En MATLAB, los valores propios y vectores propios se resuelven en el siguiente formato:

[V,D]=eig(A)

Observaciones: Esta función también puede solicitar solo una cantidad

Ejemplo 1

Utilice dos métodos para encontrar los valores propios y los vectores propios de la matriz A y verifique su error de norma correspondiente.

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

desatar:

El código MATLAB es el siguiente:

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函数转换为双精度类型

resultado de la operación:

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


re =

   34,0000 0 0
         0 0 8,9443 0
         0 0 0 -8,9443 0
         0 0 0 -0,0000


norma1 =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)]
 

norma2 =0

2. Problema de vector propio generalizado

La expresión del vector propio generalizado es la siguiente:

Ax=\lambda Bx

Si B = I en la fórmula anterior, entonces es un problema de valores propios de una matriz ordinaria. El formato MATLAB para resolver valores propios y vectores propios generalizados es el siguiente:

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

Desafortunadamente, la función eig() en la Caja de herramientas de operaciones simbólicas no admite operaciones de correlación en valores propios generalizados.

Ejemplo 2

Encuentre las matrices de valores propios y vectores propios generalizados de A y 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{}

desatar:

El código MATLAB es el siguiente:

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)

resultado de la operación:

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


re =

   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


respuesta =

   3.3761e-14

3. El valor propio más grande de una matriz dispersa

Calcule el valor propio más grande del módulo k de la matriz dispersa, el formato MATLAB es el siguiente:

d=eigs(A,k)

Calcule simultáneamente el valor propio y el vector propio más grandes. El formato de MATLAB es el siguiente:

[V,D]=eigs()

Ejemplo 3

Utilice las funciones delsq y nuggrid para generar una matriz dispersa, encuentre los valores propios máximos de seis módulos de la matriz dispersa y analice el error de este método.

desatar:

El código MATLAB es el siguiente:

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

resultado de la operación:

re =

    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


norma =

   El resultado del vector propio 1.4182e-14
es más largo; aquí solo se muestra una parte.

 

Supongo que te gusta

Origin blog.csdn.net/forest_LL/article/details/124287078
Recomendado
Clasificación