Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

eig

Valores propios y vectores propios

Descripción

ejemplo

e = eig(A) devuelve un vector de columna que contiene los valores propios de la matriz cuadrada A.

ejemplo

[V,D] = eig(A) devuelve la matriz diagonal D de los valores propios y la matriz V cuyas columnas son los vectores propios derechos correspondientes, de manera que A*V = V*D.

ejemplo

[V,D,W] = eig(A) también devuelve la matriz completa W, cuyas columnas son los vectores propios izquierdos correspondientes, de modo que W'*A = D*W'.

El problema del valor propio es determinar la solución a la ecuación Av = λv, donde A es una matriz de n por n, v es un vector de columna de longitud n y λ es un escalar. Los valores de λ que satisfacen la ecuación son los valores propios. Los valores correspondientes de v que satisfacen la ecuación son los vectores propios derechos. Los vectores propios izquierdos, w, satisfacen la ecuación wA = λw’.

ejemplo

e = eig(A,B) devuelve un vector de columna que contiene los valores propios generalizados de las matrices cuadradas A y B.

ejemplo

[V,D] = eig(A,B) devuelve la matriz diagonal D de los valores propios generalizados y la matriz completa V, cuyas columnas corresponden a los vectores propios derechos correspondientes, de manera que A*V = B*V*D.

[V,D,W] = eig(A,B) también devuelve la matriz completa W, cuyas columnas son los vectores propios izquierdos correspondientes, de modo que W'*A = D*W'*B.

El problema del valor propio generalizado es determinar la solución a la ecuación Av = λBv, donde A y B son matrices de n por n, v es un vector de columna de longitud n y λ es un escalar. Los valores de λ que satisfacen la ecuación son los valores propios generalizados. Los valores correspondientes de v son los vectores propios derechos generalizados. Los vectores propios izquierdos, w, satisfacen la ecuación wA = λwB.

[___] = eig(A,balanceOption), donde balanceOption es 'nobalance', deshabilita el paso de equilibrio preliminar en el algoritmo. El valor predeterminado de balanceOption es 'balance', que habilita el equilibrio. La función eig puede devolver cualquiera de los argumentos de salida de las sintaxis anteriores.

ejemplo

[___] = eig(A,B,algorithm), donde algorithm es 'chol', utiliza la factorización de Cholesky de B para calcular los valores propios generalizados. El valor predeterminado de algorithm depende de las propiedades de A y B, pero generalmente es 'qz', que utiliza el algoritmo QZ.

Si A es hermítica y B es definida positiva hermítica, el valor predeterminado para algorithm es 'chol'.

ejemplo

[___] = eig(___,eigvalOption) devuelve los valores propios en la forma especificada por eigvalOption mediante cualquiera de los argumentos de entrada o de salida de las sintaxis anteriores. Especifique eigvalOption como 'vector' para devolver los valores propios en un vector de columna o como 'matrix' para devolver los valores propios en una matriz diagonal.

Ejemplos

contraer todo

Utilice gallery para crear una matriz definida positiva simétrica.

A = gallery('lehmer',4)
A = 4×4

    1.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

Calcule los valores propios de A. El resultado es un vector de columna.

e = eig(A)
e = 4×1

    0.2078
    0.4078
    0.8482
    2.5362

Como alternativa, utilice eigvalOption para devolver los valores propios en una matriz diagonal.

D = eig(A,'matrix')
D = 4×4

    0.2078         0         0         0
         0    0.4078         0         0
         0         0    0.8482         0
         0         0         0    2.5362

Utilice gallery para crear una matriz circulante.

A = gallery('circul',3)
A = 3×3

     1     2     3
     3     1     2
     2     3     1

Calcule los valores propios y los vectores propios derechos de A.

[V,D] = eig(A)
V = 3×3 complex

  -0.5774 + 0.0000i   0.2887 - 0.5000i   0.2887 + 0.5000i
  -0.5774 + 0.0000i  -0.5774 + 0.0000i  -0.5774 + 0.0000i
  -0.5774 + 0.0000i   0.2887 + 0.5000i   0.2887 - 0.5000i

D = 3×3 complex

   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

Compruebe que los resultados satisfagan A*V = V*D.

A*V - V*D
ans = 3×3 complex
10-14 ×

  -0.2665 + 0.0000i  -0.0444 + 0.0222i  -0.0444 - 0.0222i
   0.0888 + 0.0000i   0.0111 + 0.0777i   0.0111 - 0.0777i
  -0.0444 + 0.0000i  -0.0111 + 0.0833i  -0.0111 - 0.0833i

Idealmente, la descomposición de los valores propios satisface la relación. Dado que eig realiza la descomposición mediante cálculos en punto flotante, A*V puede, en el mejor de los casos, aproximarse a V*D. En otras palabras, A*V - V*D es casi pero no exactamente 0.

De forma predeterminada, eig no siempre devuelve los valores propios y los vectores propios en orden. Utilice la función sort para colocar los valores propios en orden ascendente y reordenar los vectores propios correspondientes.

Calcule los valores propios y los vectores propios de una matriz cuadrada mágica de 5 por 5.

A = magic(5)
A = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

[V,D] = eig(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×5

   65.0000         0         0         0         0
         0  -21.2768         0         0         0
         0         0  -13.1263         0         0
         0         0         0   21.2768         0
         0         0         0         0   13.1263

Los valores propios de A están en la diagonal de D. Sin embargo, los valores propios están desordenados.

Extraiga los valores propios de la diagonal de D mediante diag(D) y, a continuación, ordene el vector resultante en orden ascendente. La segunda salida de sort devuelve un vector de permutación de índices.

[d,ind] = sort(diag(D))
d = 5×1

  -21.2768
  -13.1263
   13.1263
   21.2768
   65.0000

ind = 5×1

     2
     3
     5
     4
     1

Utilice ind para reordenar los elementos diagonales de D. Dado que los valores propios de D corresponden a los vectores propios de las columnas de V, también debe reordenar las columnas de V utilizando los mismos índices.

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×5

    0.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

Tanto (V,D) como (Vs,Ds) producen la descomposición de valores propios de A. Los resultados de A*V-V*D y A*Vs-Vs*Ds son similares hasta el error de redondeo.

e1 = norm(A*V-V*D);
e2 = norm(A*Vs-Vs*Ds);
e = abs(e1 - e2)
e = 1.2622e-29

Cree una matriz de 3 por 3.

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

Calcule los vectores propios derechos, V, los valores propios, D y los vectores propios izquierdos, W.

[V,D,W] = eig(A)
V = 3×3

   -0.2610   -0.9734    0.1891
   -0.5870    0.2281   -0.5816
   -0.7663   -0.0198    0.7912

D = 3×3

   25.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

Compruebe que los resultados satisfagan W'*A = D*W'.

W'*A - D*W'
ans = 3×3
10-13 ×

   -0.0444   -0.1066   -0.0888
   -0.0011    0.0442    0.0333
         0    0.0266    0.0178

Idealmente, la descomposición de los valores propios satisface la relación. Dado que eig realiza la descomposición mediante cálculos en punto flotante, W'*A puede, en el mejor de los casos, aproximarse a D*W'. En otras palabras, W'*A - D*W' es casi pero no exactamente 0.

Cree una matriz de 3 por 3.

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

Calcule los valores propios y los vectores propios derechos de A.

[V,D] = eig(A)
V = 3×3

    1.0000   -1.0000    1.0000
         0    0.0000   -0.0000
         0         0    0.0000

D = 3×3

     3     0     0
     0     3     0
     0     0     3

A tiene valores propios repetidos y los vectores propios no son independientes. Esto significa que A no es diagonalizable y, por lo tanto, es defectuosa.

Compruebe que V y D satisfagan la ecuación, A*V = V*D, aunque A sea defectuosa.

A*V - V*D
ans = 3×3
10-15 ×

         0    0.8882   -0.8882
         0         0    0.0000
         0         0         0

Idealmente, la descomposición de los valores propios satisface la relación. Dado que eig realiza la descomposición mediante cálculos en punto flotante, A*V puede, en el mejor de los casos, aproximarse a V*D. En otras palabras, A*V - V*D es casi pero no exactamente 0.

Cree dos matrices, A y B; después, resuelva el problema de los valores propios generalizados para los valores propios y los vectores propios derechos del par (A,B).

A = [1/sqrt(2) 0; 0 1];
B = [0 1; -1/sqrt(2) 0];
[V,D]=eig(A,B)
V = 2×2 complex

   1.0000 + 0.0000i   1.0000 + 0.0000i
   0.0000 - 0.7071i   0.0000 + 0.7071i

D = 2×2 complex

   0.0000 + 1.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 - 1.0000i

Compruebe que los resultados satisfagan A*V = B*V*D.

A*V - B*V*D
ans = 2×2

     0     0
     0     0

El error residual A*V - B*V*D es exactamente cero.

Cree una matriz simétrica mal condicionada que contenga valores cercanos a la precisión de la máquina.

format long e
A = diag([10^-16, 10^-15])
A = 2×2

     1.000000000000000e-16                         0
                         0     1.000000000000000e-15

Calcule los valores propios generalizados y un conjunto de vectores propios derechos utilizando el algoritmo predeterminado. En este caso, el algoritmo predeterminado es 'chol'.

[V1,D1] = eig(A,A)
V1 = 2×2

     1.000000000000000e+08                         0
                         0     3.162277660168380e+07

D1 = 2×2

     9.999999999999999e-01                         0
                         0     1.000000000000000e+00

Ahora, calcule los valores propios generalizados y un conjunto de vectores propios derechos mediante el algoritmo 'qz'.

[V2,D2] = eig(A,A,'qz')
V2 = 2×2

     1     0
     0     1

D2 = 2×2

     1     0
     0     1

Compruebe hasta qué punto el resultado de 'chol' satisface A*V1 = A*V1*D1.

format short
A*V1 - A*V1*D1
ans = 2×2
10-23 ×

    0.1654         0
         0   -0.6617

Ahora, compruebe hasta qué punto el resultado de 'qz' satisface A*V2 = A*V2*D2.

A*V2 - A*V2*D2
ans = 2×2

     0     0
     0     0

Cuando ambas matrices son simétricas, eig utiliza de forma predeterminada el algoritmo 'chol'. En este caso, el algoritmo QZ devuelve resultados más precisos.

Cree una matriz de identidad de 2 por 2, A, y una matriz singular, B.

A = eye(2);
B = [3 6; 4 8];

Intente calcular los valores propios generalizados de la matriz, .

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

Warning: Matrix is singular to working precision.

Error using eig

Input to EIG must not contain NaN or Inf.

Ahora calcule los valores propios generalizados y los vectores propios derechos pasando ambas matrices a la función eig.

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

   -0.7500   -1.0000
   -1.0000    0.5000

D = 2×2

    0.0909         0
         0       Inf

Es mejor pasar ambas matrices por separado, y dejar que eig elija el mejor algoritmo para resolver el problema. En este caso, eig(A,B) devolvió un conjunto de vectores propios y al menos un valor propio real, aunque B no es invertible.

Verifique para el primer valor propio y el primer vector propio.

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

    0.1110
    0.2220

Idealmente, la descomposición de los valores propios satisface la relación. Dado que la descomposición se realiza utilizando cálculos en punto flotante, A*eigvec puede, en el mejor de los casos, aproximarse a eigval*B*eigvec, como lo hace en este caso.

Argumentos de entrada

contraer todo

Matriz de entrada, especificada como una matriz cuadrada real o compleja.

Tipos de datos: double | single
Soporte de números complejos:

Matriz de entrada del problema del valor propio generalizado, especificada como matriz cuadrada de valores reales o complejos. B debe tener el mismo tamaño que A.

Tipos de datos: double | single
Soporte de números complejos:

Opción de equilibrio, especificada como: 'balance', que habilita un paso de equilibrio preliminar, o 'nobalance', que lo deshabilita. En la mayoría de los casos, el paso de equilibrio mejora el condicionamiento de A para producir resultados más precisos. Sin embargo, hay casos en los que el equilibrio produce resultados incorrectos. Especifique 'nobalance' cuando A contiene valores cuya escala difiere drásticamente. Por ejemplo, si A contiene enteros distintos de cero, así como valores muy pequeños (cercanos a cero), el paso de equilibrio podría escalar los valores pequeños para hacerlos tan significativos como los enteros y producir resultados inexactos.

'balance' es el comportamiento predeterminado. Para obtener más información sobre el equilibrio, consulte balance.

Tipos de datos: char

Algoritmo de valor propio generalizado, especificado como 'chol' o 'qz', que selecciona el algoritmo utilizado para calcular los valores propios generalizados de un par.

algoritmoDescripción
'chol'Calcula los valores propios generalizados de A y B utilizando la factorización de Cholesky de B.
'qz'Utiliza el algoritmo QZ, también conocido como la descomposición de Schur generalizada. Este algoritmo omite la simetría de A y B.

En general, los dos algoritmos devuelven el mismo resultado. El algoritmo QZ puede ser más estable para ciertos problemas, como los que implican matrices mal condicionadas.

Al omitir el argumento algorithm, la función eig selecciona un algoritmo basado en las propiedades de A y B. Utiliza el algoritmo 'chol' para la simétrica (hermítica) A y la definida positiva (hermítica) simétrica B. De lo contrario, utiliza el algoritmo 'qz'.

Independientemente del algoritmo que especifique, la función eig utiliza siempre el algoritmo QZ cuando A o B no son simétricas.

Opción de valor propio, especificada como 'vector' o 'matrix'. Esta opción permite especificar si los valores propios se devuelven en un vector de columna o en una matriz diagonal. El comportamiento predeterminado varía según el número de salidas especificadas:

  • Si especifica una salida, como e = eig(A), los valores propios se devuelven como vector de columna de forma predeterminada.

  • Si especifica dos o tres salidas, como [V,D] = eig(A), los valores propios se devuelven como matriz diagonal, D, de forma predeterminada.

Ejemplo: D = eig(A,'matrix') devuelve una matriz diagonal de valores propios con la sintaxis de una salida.

Tipos de datos: char

Argumentos de salida

contraer todo

Valores propios, devueltos como vector de columna que contiene los valores propios (o valores propios generalizados de un par) con multiplicidad.

  • Cuando A es real y hermítica simétrica o compleja, los valores de e que satisfacen Av = λv son reales.

  • Cuando A es real y simétrica sesgada o hermítica sesgada, los valores de e que satisfacen Av = λv son puramente imaginarios o cero.

Vectores propios derechos, devueltos como una matriz cuadrada cuyas columnas son los vectores propios derechos de A o los vectores derechos generalizados del par, (A,B). La forma y la normalización de V dependen de la combinación de argumentos de entrada:

  • [V,D] = eig(A) devuelve la matriz V, cuyas columnas son los vectores propios derechos de A, de manera que A*V = V*D. Los vectores propios de V se normalizan para que la norma 2 de cada uno sea 1.

    Si A es simétrica real, entonces los vectores propios derechos, V, son ortonormales.

  • [V,D] = eig(A,'nobalance') también devuelve la matriz V. Sin embargo, la norma 2 de cada vector propio no es necesariamente 1.

  • [V,D] = eig(A,B) y [V,D] = eig(A,B,algorithm) devuelven V como una matriz cuyas columnas son los vectores propios derechos generalizados que satisfacen A*V = B*V*D. La norma 2 de cada vector propio no es necesariamente 1. En este caso, D contiene los valores propios generalizados del par, (A,B), a lo largo de la diagonal principal.

    Cuando eig utiliza el algoritmo 'chol' con A simétrica (hermítica) y B definida positiva (hermítica) simétrica, normaliza los vectores propios de V para que la norma B de cada uno sea 1.

Diferentes equipos y versiones de MATLAB® pueden producir vectores propios distintos que son numéricamente precisos:

  • Para los vectores propios reales, el signo de los vectores propios puede cambiar.

  • Para los vectores propios complejos, los vectores propios se pueden multiplicar por cualquier número complejo de magnitud 1.

  • Para un valor propio múltiple, sus vectores propios se pueden recombinar mediante combinaciones lineales. Por ejemplo, si Ax = λx y Ay = λy, entonces A(x+y) = λ(x+y), así que x+y también es un vector propio de A.

Valores propios, devueltos como matriz diagonal con los valores propios de A en la diagonal principal o los valores propios del par, (A,B), con multiplicidad, en la diagonal principal.

  • Cuando A es real y hermítica simétrica o compleja, los valores de D que satisfacen Av = λv son reales.

  • Cuando A es real y simétrica sesgada o hermítica sesgada, los valores de D que satisfacen Av = λv son puramente imaginarios o cero.

Vectores propios izquierdos, devueltos como una matriz cuadrada cuyas columnas son los vectores propios izquierdos de A o vectores propios izquierdos generalizados del par, (A,B). La forma y la normalización de W dependen de la combinación de argumentos de entrada:

  • [V,D,W] = eig(A) devuelve la matriz W, cuyas columnas son los vectores propios izquierdos de A, de forma que W'*A = D*W'. Los vectores propios de W se normalizan para que la norma 2 de cada uno sea 1. Si A es simétrica, W es igual que V.

  • [V,D,W] = eig(A,'nobalance') también devuelve la matriz W. Sin embargo, la norma 2 de cada vector propio no es necesariamente 1.

  • [V,D,W] = eig(A,B) y [V,D,W] = eig(A,B,algorithm) devuelven W como una matriz cuyas columnas son los vectores propios izquierdos generalizados que satisfacen W'*A = D*W'*B. La norma 2 de cada vector propio no es necesariamente 1. En este caso, D contiene los valores propios generalizados del par, (A,B), a lo largo de la diagonal principal.

    Si A y B son simétricas, W es lo mismo que V.

Diferentes equipos y versiones de MATLAB pueden producir vectores propios distintos que son numéricamente precisos:

  • Para los vectores propios reales, el signo de los vectores propios puede cambiar.

  • Para los vectores propios complejos, los vectores propios se pueden multiplicar por cualquier número complejo de magnitud 1.

  • Para un valor propio múltiple, sus vectores propios se pueden recombinar mediante combinaciones lineales. Por ejemplo, si Ax = λx y Ay = λy, entonces A(x+y) = λ(x+y), así que x+y también es un vector propio de A.

Sugerencias

  • La función eig puede calcular los valores propios de las matrices dispersas que son reales y simétricas. Para calcular los vectores propios de una matriz dispersa o para calcular los valores propios de una matriz dispersa que no sea real y simétrica, utilice la función eigs.

Capacidades ampliadas

Consulte también

| | | | |

Introducido antes de R2006a