Valores y vectores propios

Se denominan valores propios o raíces características de una matriz cuadrada A, a los valores de λ tales que.

det(AλE)=| a 11 λ a 12 ... a 1n a 21 a 22 λ ... a 2n ... ... ... a n1 a n2 a nn λ |=0

Desarrollando el determinante tenemos un polinomio de grado n en λ. Trataremos de encontrar los coeficientes del polinomio y luego, aplicaremos un método de hallar las raíces del polinomio.

Una vez hallados los valores propios, para hallar el vector propio X correspondiente al valor propio λ es necesario resolver el sistema homogéneo

AX=λX

donde el vector X es  X={ x 1 , x 2, ... x n } Siempre podemos tomar x1 como 1, y hallar las otras n-1 incógnitas. De las n ecuaciones podemos tomar n-1, y resolver el sistema lineal.

( a 22 λ) x 2 + a 23 x 3 +....+ a 2n x n = a 21 a 32 x 2 +( a 33 λ) x 3 +....+ a 3n x n = a 31 ............................................... a n2 x 2 + a n3 x 3 +....+( a nn λ) x n = a n1

El polinomio característico

Dada una matriz cuadrada A de dimensión n. El polinomio característico de la matriz es

p(λ)= λ n + p 1 λ n1 + p 2 λ n2 +... p n1 λ+ p n

Los coeficientes se hallan mediante las siguientes relaciones:

p 1 = s 1 p 2 = 1 2 ( s 2 + p 1 s 1 ) .......................... p n = 1 n ( s n + p 1 s n1 +....+ p n1 s 1 ) } (1)

Los valores s1, s2, ... sn son las trazas de las potencias de la matriz cuadrada A.

s 1 =trazaA s 2 =traza A 2 .................... s n =traza A n }trazaA= i=1 in a ii

La aplicación de este método no reviste dificultad, se calculan:

Hallar el polinomio característico de la matriz

( 1 2 3 4 2 1 2 3 3 2 1 2 4 3 2 1 )

El desarrollo del determinante secular mediante el método de Leverrier conduce a la ecuación

λ 4 4 λ 3 40 λ 2 56λ20=0

Conocidos los coeficientes del polinomio característico, se determinan las raíces por algún procedimiento numérico, el mejor procedimiento es utilizar la función MATLAB roots que veremos con más detalle en el capítulo raíces de una ecuación.

Vectores propios

Conocidos los valores propios de una matriz simétrica A, se pueden calcular el vector propio X correspondiente a cada valor propio λ.

AX=λX

mediante el siguiente procedimiento. Supongamos una matriz simétrica A de dimensión 4.

[ a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 ][ x 1 x 2 x 3 x 4 ]=λ[ x 1 x 2 x 3 x 4 ] [ a 11 λ a 12 a 13 a 14 a 21 a 22 λ a 23 a 24 a 31 a 32 a 33 λ a 34 a 41 a 42 a 43 a 44 λ ][ x 1 x 2 x 3 x 4 ]=0

Conocido el valor propio λ, tenemos un sistema de ecuaciones homogéneo de 4 ecuaciones con 4 incógnitas. Le damos a x1 el valor arbitrario de 1 y lo convertimos en el sistema de tres ecuaciones con tres incógnitas

{ a 21 x 1 +( a 22 λ) x 2 + a 23 x 3 + a 24 x 4 =0 a 31 x 1 + a 32 x 2 +( a 33 λ) x 3 + a 34 x 4 =0 a 41 x 1 + a 42 x 2 + a 43 x 3 +( a 44 λ) x 4 =0 { ( a 22 λ) x 2 + a 23 x 3 + a 24 x 4 = a 21 x 1 a 32 x 2 +( a 33 λ) x 3 + a 34 x 4 = a 31 x 1 a 42 x 2 + a 43 x 3 +( a 44 λ) x 4 = a 41 x 1 [ ( a 22 λ) a 23 a 24 a 32 ( a 33 λ) a 34 a 42 a 43 ( a 44 λ) ][ x 2 x 3 x 4 ]=[ a 21 x 1 a 31 x 1 a 41 x 1 ]

El método Leverrier

A la función leverrier se le pasa la matriz cuadrada A de dimensión n y devuelve dos matrices

La función leverrier realiza dos tareas:

  1. Calcula las potencias de la matriz A y sus trazas guardándolas en el vector s.

  2. Calcula n coeficientes del polinomio característico de acuerdo con las fórmulas (1) y los guarda en el vector p. Se ha de tener en cuenta que el coeficiente que falta es el de mayor grado y vale 1. El vector de los coeficientes del polinomio característico es el vector ampliado [1, p] cuyo primer término es 1 y a continuación el resto de los coeficienetes calculados.

  3. Calcula las raíces del polinomio, que son los valores propios empleando la función MATLAB roots, a la cual se le pasa el vector de los coeficientes y devuelve el vector (columna) de las raíces.

  4. Creamos una matriz D de dimensión n en cuya diagonal principal guardamos los valores propios, D(i,i)=λi

  1. Extraemos de la matriz A la submatriz A(2:n,2:n) y creamos otra matriz B de dimensión n-1. Los elementos de la diagonal de la matiz B, valen B(i,i)=A(i,i)-λi

  2. Extraemos los elementos 2..n de la primera columna de la matriz A del siguiente modo, A(2:n,1), los cambiamos de signo y los asignamos al vector C de dimensión n-1.

  3. Los n-1 elementos del vector popio correspondiente al valor propio λi se obtienen resolviendo un sistema de n-1 ecuaciones con n-1 incógnitas, mediante el operador división por la izquierda \ tal como hemos visto en la página Vectores y matrices.

  4. El vector propio S correspondiente al valor propio λi está formado por la unidad y los n-1 valores que hemos obtenido al resolver el sistema lineal de n-1 ecuaciones con n-1 incógnitas.

  5. El vector propio S se normaliza (su módulo es la unidad). Recuérdese que el cuadrado del módulo de un vector es el producto escalar de dicho vector consigo mismo.

  6. El vector propio S correspondiente al valor propio λi es la columna i de la matriz V. V(1:n,i)=S/norm(S). La función MATLAB norm calcula el módulo de un vector.

Finalmente, comprobamos que los resultados son correctos realizando el producto

V×D×V-1

cuyo resultado es la matriz original A.

function [V,D]=leverrier(A)    
    %V vectores propios en columnas
    % D valores propios en la diagonal de la matriz
    n=length(A); %dimensión de la matriz
    p=zeros(1,n); %reserva memoria para n elementos
    s=zeros(n,1);
    B=zeros(n); %reserva memoria para la matriz cuadrada de dimensión n 
    for i=1:n
        B=A^i; %potencia de la matriz A
    %calcula la traza de las sucesivas potencias de la matriz A     
    s(i)=trace(B);
    end
    %calcula los coeficientes del polinomio característico
    p(1)=-s(1);
    for i=2:n
        p(i)=-s(i)/i;
        for j=1:i-1
            p(i)=p(i)-p(j)*s(i-j)/i;
        end
    end
    %raíces del polinomio característico
    raiz=roots([1 p]); 
    %Los valores propios aparecen en la diagonal de la matriz D
    D=diag(raiz);
    %Vectores propios para cada valor propio 
    C=-1.*A(2:n,1); %columna de A
    V=zeros(n);
    S=zeros(n,1); %vector propio
    for i=1:length(D)
        B=A(2:n,2:n)-D(i,i)*eye(n-1); %submatriz de A
        S=[1 (B\C)'];
        % vectores propios normalizados
        %cada vector propio es una columna de V
        V(1:n,i)=S/norm(S); 
    end
end

Probamos la función leverrier en la ventana de comandos

>> A=[1 2 3 4; 2 1 2 3; 3 2 1 2; 4 3 2 1]
A =
     1     2     3     4
     2     1     2     3
     3     2     1     2
     4     3     2     1
>> [V,D]=leverrier(A)
V =
    0.5468    0.6533    0.4483    0.2706
    0.4483    0.2706   -0.5468   -0.6533
    0.4483   -0.2706   -0.5468    0.6533
    0.5468   -0.6533    0.4483   -0.2706
D =
    9.0990         0         0         0
         0   -3.4142         0         0
         0         0   -1.0990         0
         0         0         0   -0.5858
>> V*D*inv(V)
ans =
    1.0000    2.0000    3.0000    4.0000
    2.0000    1.0000    2.0000    3.0000
    3.0000    2.0000    1.0000    2.0000
    4.0000    3.0000    2.0000    1.0000

La función eig

MATLAB dispone de la función eig que realiza las mismas tareas que la función leverrier.

>> A=[1 2 3 4; 2 1 2 3; 3 2 1 2; 4 3 2 1]
A =
     1     2     3     4
     2     1     2     3
     3     2     1     2
     4     3     2     1
>> [V,D]=eig(A)
V =
    0.6533   -0.4483    0.2706    0.5468
    0.2706    0.5468   -0.6533    0.4483
   -0.2706    0.5468    0.6533    0.4483
   -0.6533   -0.4483   -0.2706    0.5468
D =
   -3.4142         0         0         0
         0   -1.0990         0         0
         0         0   -0.5858         0
         0         0         0    9.0990

Ejercicio: Calcular los vectores propios y los valores propios de las matrices

( 1 3 2 1 1 1 1 0 0 )( 7 1 1 1 5 1 1 1 5 )

Ejemplos en el curso de Física

Modos normales de vibración (I)

Modos normales de vibración (II)