Main Content

eig

Valores propios y vectores propios

Descripción

ejemplo

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

ejemplo

[V,D] = eig(A) devuelve la matriz diagonal D de valores propios y la matriz V cuyas columnas son los vectores propios derechos correspondientes, de forma 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, por lo que W'*A = D*W'.

El problema de valores propios consiste en determinar la solución de la ecuación Av = λv, donde A es una matriz de n por n, v es un vector 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 w'A = λw'.

ejemplo

e = eig(A,B) devuelve un vector 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 valores propios generalizados y la matriz completa V cuyas columnas son los vectores propios derechos correspondientes, de forma 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, por lo que W'*A = D*W'*B.

El problema de valores propios generalizados consiste en determinar la solución de la ecuación Av = λBv, donde A y B son matrices de n por n, v es un vector 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 w'A = λw'B.

[___] = eig(A,balanceOption), donde balanceOption es "nobalance", desactiva el paso de equilibrado preliminar en el algoritmo. El valor predeterminado de balanceOption es "balance", que permite el equilibrado. 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, cuando A o B no son simétricas.

ejemplo

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

Ejemplos

contraer todo

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

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

e = eig(A)
e = 4×1

    0.2078
    0.4078
    0.8482
    2.5362

Como alternativa, utilice outputForm 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.5774 + 0.0000i   0.5774 + 0.0000i
  -0.5774 + 0.0000i  -0.2887 - 0.5000i  -0.2887 + 0.5000i
  -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 satisfacen A*V = V*D.

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

  -0.2220 + 0.0000i  -0.0888 - 0.0111i  -0.0888 + 0.0111i
   0.0888 + 0.0000i   0.0000 + 0.0833i   0.0000 - 0.0833i
  -0.0444 + 0.0000i  -0.1110 + 0.0666i  -0.1110 - 0.0666i

Lo ideal es que la descomposición de valores propios satisfaga la relación. Dado que eig realiza la descomposición utilizando cálculos de punto flotante, A*V puede, en el mejor de los casos, aproximarse a V*D. En otras palabras, A*V - V*D está cerca, aunque no exactamente, de 0.

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

Calcule los valores y 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 no están ordenados.

Extraiga los valores propios de la diagonal de D utilizando diag(D) y, a continuación, disponga 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

Use ind para reordenar los elementos de la diagonal de D. Como los valores propios de D se corresponden con los vectores propios de las columnas de V, también hay que 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) permiten obtener la descomposición en valores propios de A. Los resultados de A*V-V*D y A*Vs-Vs*Ds coinciden, hasta el error de redondeo.

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

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 satisfacen 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

Lo ideal es que la descomposición de valores propios satisfaga la relación. Dado que eig realiza la descomposición utilizando cálculos de punto flotante, W'*A puede, en el mejor de los casos, aproximarse a D*W'. En otras palabras, W'*A - D*W' está cerca, aunque no exactamente, de 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 tanto, es defectuosa.

Compruebe que V y D satisfacen 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

Lo ideal es que la descomposición de valores propios satisfaga la relación. Dado que eig realiza la descomposición utilizando cálculos de punto flotante, A*V puede, en el mejor de los casos, aproximarse a V*D. En otras palabras, A*V - V*D está cerca, aunque no exactamente, de 0.

Cree dos matrices, A y B y, a continuación, resuelva el problema de valores propios generalizados correspondiente a 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 satisfacen 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 con 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

Después, calcule los valores propios generalizados y un conjunto de vectores propios derechos con 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

A continuación, 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 el algoritmo "chol" de forma predeterminada. En este caso, el algoritmo QZ devuelve resultados más precisos.

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

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

Si intenta calcular los valores propios generalizados de la matriz B-1A con el comando [V,D] = eig(B\A), MATLAB® devuelve un error porque B\A produce valores Inf.

En su lugar, 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) devuelve un conjunto de vectores propios y al menos un valor propio real, aunque B no sea invertible.

Compruebe que Av=λBv 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

Lo ideal es que la descomposición de valores propios satisfaga la relación. Dado que la descomposición se realiza utilizando cálculos de punto flotante, A*eigvec puede, en el mejor de los casos, acercarse a eigval*B*eigvec, como ocurre en este caso.

Argumentos de entrada

contraer todo

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

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

Matriz de entrada del problema de valores propios generalizados, 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 equilibrado, especificada como "balance", que habilita un paso de equilibrado preliminar, o "nobalance", que lo deshabilita. En la mayoría de los casos, el paso de equilibrado mejora el condicionamiento de A para producir resultados más precisos. Sin embargo, hay casos en los que el equilibrado produce resultados incorrectos. Especifique "nobalance" cuando A contenga valores cuya escala difiera drásticamente. Por ejemplo, si A contiene enteros distintos de cero, así como valores muy pequeños (cercanos a cero), el paso de equilibrado 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 acerca del equilibrado, consulte balance.

Algoritmo de valores propios generalizados, especificado como "chol" o "qz", que selecciona el algoritmo que se utilizará 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. Si A no es simétrica (hermítica) o si B no es definida positiva simétrica (hermítica), eig usa el algoritmo QZ.
"qz"Usa el algoritmo QZ, también conocido como descomposición generalizada de Schur. Este algoritmo ignora la simetría de A y B.

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

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

Formato de salida de los valores propios, especificado como "vector" o "matrix". Esta opción permite especificar si los valores propios se devuelven en un vector columna o en una matriz diagonal. El comportamiento predeterminado varía en función del número de salidas especificadas:

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

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

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

Argumentos de salida

contraer todo

Valores propios, devueltos como un vector columna que contiene los valores propios (o valores propios generalizados de un par) con multiplicidad. Cada valor propio e(k) se corresponde con el vector propio derecho V(:,k) y el vector propio izquierdo W(:,k).

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

  • Cuando A es una matriz real antisimétrica o compleja antihermítica, los valores de e que satisfacen Av = λv son imaginarios.

Vectores propios derechos, devueltos como una matriz cuadrada cuyas columnas son los vectores propios derechos de A o vectores propios derechos generalizados del par, (A,B). La forma y 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 de modo que la norma 2 de cada uno sea 1.

    Si A es una matriz real simétrica, hermítica o antihermítica, los vectores propios derechos de V son ortonormales.

  • [V,D] = eig(A,"nobalance") también devuelve una 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 simétrica (hermítica) definida positiva, normaliza los vectores propios de V para que la norma B de cada uno sea 1.

Diferentes máquinas y versiones de MATLAB® pueden producir diferentes vectores propios que siguen siendo numéricamente precisos:

  • En el caso de los vectores propios reales, su signo puede cambiar.

  • En el caso de los vectores propios complejos, estos pueden multiplicarse por cualquier número complejo de magnitud 1.

  • En el caso de un valor propio múltiple, sus vectores propios pueden volver a combinarse mediante combinaciones lineales. Por ejemplo, si Ax = λx y Ay = λy, A(x+y) = λ(x+y), por lo que x+y también es un vector propio de A.

Valores propios, devueltos como una 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. Cada valor propio D(k,k) se corresponde con el vector propio derecho V(:,k) y el vector propio izquierdo W(:,k).

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

  • Cuando A es una matriz real antisimétrica o compleja antihermítica, los valores de D que satisfacen Av = λv son imaginarios.

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 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, tales que W'*A = D*W'. Los vectores propios de W se normalizan de modo 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 una 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 igual que V.

Diferentes máquinas y versiones de MATLAB pueden producir diferentes vectores propios que siguen siendo numéricamente precisos:

  • En el caso de los vectores propios reales, su signo puede cambiar.

  • En el caso de los vectores propios complejos, estos pueden multiplicarse por cualquier número complejo de magnitud 1.

  • En el caso de un valor propio múltiple, sus vectores propios pueden volver a combinarse mediante combinaciones lineales. Por ejemplo, si Ax = λx y Ay = λy, A(x+y) = λ(x+y), por lo que x+y también es un vector propio de A.

Más acerca de

contraer todo

Matriz simétrica

  • Una matriz cuadrada, A, es simétrica si es igual a su traspuesta no conjugada, A = A.'.

    En términos de los elementos de la matriz, esto significa que

    ai,j=aj,i.

  • Dado que las matrices reales no se ven afectadas por la conjugación compleja, una matriz real que es simétrica también es hermítica. Por ejemplo, la matriz

    A=[100210101]

    es simétrica y hermítica.

Matriz antisimétrica

  • Una matriz cuadrada, A, es antisimétrica si es igual a la negación de su traspuesta no conjugada, A = -A.'.

    En términos de los elementos de la matriz, esto significa que

    ai,j=aj,i.

  • Dado que las matrices reales no se ven afectadas por la conjugación compleja, una matriz real que es antisimétrica también es antihermítica. Por ejemplo, la matriz

    A=[0110]

    es antisimétrica y antihermítica.

Matriz hermítica

  • Una matriz cuadrada, A, es hermítica si es igual a su traspuesta conjugada compleja, A = A'.

    En términos de los elementos de la matriz, esto significa que

    ai,j=a¯j,i.

  • Las entradas de la diagonal de una matriz hermítica son siempre reales. Dado que las matrices reales no se ven afectadas por la conjugación compleja, una matriz real que es simétrica también es hermítica. Por ejemplo, la matriz

    A=[100210101]

    es simétrica y hermítica.

  • Los valores propios de una matriz hermítica son reales.

Matriz antihermítica

  • Una matriz cuadrada, A, es antihermítica si es igual a la negación de su traspuesta conjugada compleja, A = -A'.

    En términos de los elementos de la matriz, esto significa que

    ai,j=a¯j,i.

  • Las entradas de la diagonal de una matriz antihermítica son siempre imaginarias puras o cero. Dado que las matrices reales no se ven afectadas por la conjugación compleja, una matriz real que es antisimétrica también es antihermítica. Por ejemplo, la matriz

    A=[0110]

    es antihermítica y antisimétrica.

  • Los valores propios de una matriz antihermítica son puramente imaginarios o cero.

Sugerencias

  • La función eig puede calcular los valores propios de matrices dispersas que sean 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

Historial de versiones

Introducido antes de R2006a

expandir todo

Consulte también

| | | | | | |