Sistemas homogéneos de ecuaciones diferenciales lineales

Valores propios reales y distintos

Comencemos con un sistema de dos ecuaciones diferenciales, con las condiciones iniciales especificadas.

{ dx dt =x+2y dy dt =3x+2y t=0{ x=0 y=4

Resolvemos el sistema de forma analítica

d 2 x d t 2 = dx dt +2 dy dt d 2 x d t 2 dx dt 2(3x+2y)=0 d 2 x d t 2 dx dt 6x4 1 2 ( dx dt x )=0 d 2 x d t 2 3 dx dt 4x=0 s 2 3s4=0{ s 1 =4 s 2 =1 x= C 1 e 4t + C 2 e t y= 1 2 ( dx dt x )= 3 2 C 1 e 4t C 2 e t

Determinamos C1 y C2 a partir de las condiciones iniciales

{ 0= C 1 + C 2 4= 3 2 C 1 C 2 x= 8 5 ( e 4t + e t ) y= 4 5 ( 3 e 4t +2 e t )

Resolvemos el sistema de las dos ecuaciones diferenciales utilizando la función dsolve de MATLAB

>> syms x y t;
>> eq1='Dx=x+2*y';
>> eq2='Dy=3*x+2*y';
>> [x1 y1]=dsolve(eq1,eq2,'x(0)=0','y(0)=-4')
x1 =8/(5*exp(t)) - (8*exp(4*t))/5
y1 =- 8/(5*exp(t)) - (12*exp(4*t))/5

Escribimos el sistema de dos ecuaciones diferenciales lineales en forma matricial

( dx dt dy dt )=( 1 2 3 2 )( x y ) u ˙ =Au

Calculamos los valores y vectores propios de la matriz A mediante la función eig de MATLAB

>> A=sym('[1,2;3,2]');
>> [V D]=eig(A)
V =
[ -1, 2/3]
[  1,   1]
D =
[ -1, 0]
[  0, 4]

Los valores propios son λ1=-1 y λ2=4 y los correspondientes vectores propios son v1=[-1, 2/3] y v2=[1, 1]. La solución del sistema de ecuaciones diferenciales se escribe

x= C 1 v 1 e λ 1 t + C 2 v 2 e λ 2 t ( x y )= C 1 ( 1 1 ) e t + C 2 ( 2/3 1 ) e 4t

Determinamos C1 y C2 a partir de las condiciones iniciales

( 0 4 )= C 1 ( 1 1 )+ C 2 ( 2/3 1 ){ C 1 = 8 5 C 2 = 12 5 x= 8 5 ( e 4t + e t ) y= 4 5 ( 3 e 4t +2 e t )

Elaboramos un script para obtener la solución final de x denominada x(1) en el código y de y, denominada x(2) en funcion del tiempo t.

syms t;
A=sym('[1,2;3,2]');
[V D]=eig(A); %vectores propios y valores propios
x0=sym('[0;-4]'); %condiciones inciales
C=V\x0;  %coeficientes C1 y C2
C=C.*exp(diag(D)*t); %multiplica cada coeficiente por la exponencial
x=V*C;
x=simplify(x)

Corremos el script en la ventana de comandos y obtenemos el resultado para x y para y.

Valores propios complejos conjugados

Sea el sistema homogéneo de dos ecuaciones diferenciales lineales, con las condiciones iniciales especificadas

{ dx dt =3x13y dy dt =5x+y t=0{ x=3 y=10

Resolvemos este sistema con la función dsolve de MATLAB

>> syms x y t;
>> eq1='Dx=3*x-13*y';
>> eq2='Dy=5*x+y';
>> [x1 y1]=dsolve(eq1,eq2,'x(0)=3','y(0)=-10')
x1 =3*cos(8*t)*exp(2*t) + (133*sin(8*t)*exp(2*t))/8
y1 =(25*sin(8*t)*exp(2*t))/8 - 10*cos(8*t)*exp(2*t) 

Escribimos el sistema de dos ecuaciones diferenciales lineales en forma matricial

( dx dt dy dt )=( 3 13 5 1 )( x y ) u ˙ =Au

Calculamos los valores y vectores propios de la matriz A mediante la función eig de MATLAB

>> A=sym('[3,-13;5,1]')
>> [V D]=eig(A) 
V = 
[ 1/5 - (8*i)/5, (8*i)/5 + 1/5]
[             1,             1]
D =
[ 2 - 8*i,       0]
[       0, 8*i + 2] 

Los valores propios son λ1=2-8i y λ2=2+8i. y los correspondientes vectores propios son v1=[(1-8i)/5, 1] y v2=[(1+8i)/5, 1]. La solución del sistema de ecuaciones diferenciales se escribe

x= C 1 v 1 e λ 1 t + C 2 v 2 e λ 2 t ( x y )= C 1 ( 18i 5 1 ) e (28i)t + C 2 ( 1+8i 5 1 ) e (2+8i)t

Determinamos C1 y C2 con las condiciones iniciales

( 3 10 )= C 1 ( 18i 5 1 )+ C 2 ( 1+8i 5 1 ){ C 1 = 80+25i 16 C 2 = 80+25i 16 x= 80+25i 16 · 18i 5 e (28i)t 80+25i 16 · 1+8i 5 e (2+8i)t = x= 1 8 e 2t ( 24cos(8t)+ 133 8 sin(8t) ) y= 80+25i 16 e (28i)t 80+25i 16 e (2+8i)t = y= 5 8 e 2t ( 16cos(8t)+5sin(8t) )

El cálculo de las expresiones de x e y en función del tiempo t es bastante largo. Podemos utilizar la función simplify de MATLAB para efectuar las operaciones con números complejos y simplificarla.

>> syms t;
>> x=(-80+25*i)*(1-8*i)*exp((2-8*i)*t)/80-(80+25*i)*(1+8*i)*exp((2+8*i)*t)/80;
>> simplify(x) 
ans =(exp(2*t)*(24*cos(8*t) + 133*sin(8*t)))/8
>> y=(-80+25*i)*exp((2-8*i)*t)/16-(80+25*i)*exp((2+8*i)*t)/16;
>> simplify(y)
ans =-(5*exp(2*t)*(16*cos(8*t) - 5*sin(8*t)))/8

Utilizamos el script anterior cambiando los valores de los elementos de la matriz A, y del vector x0 de los valores iniciales, obtenemos el mismo resultado para x y para y

....
A=sym('[3,-13;5,1]');
x0=sym('[3;-10]'); %condiciones inciales
....

Valores propios reales repetidos

Sea el sistema homogéneo de dos ecuaciones diferenciales lineales, con las condiciones iniciales especificadas

{ dx dt =7x+y dy dt =4x+3y t=0{ x=2 y=5

Resolvemos el sistema de forma analítica

d 2 x d t 2 =7 dx dt + dy dt d 2 x d t 2 =7 dx dt +( 4x+3y )=7 dx dt 4x+3y d 2 x d t 2 =7 dx dt 4x+3( dx dt 7x ) d 2 x d t 2 10 dx dt +25x=0 s 2 10s+25=0{ λ 1 =5 λ 2 =5 x=( C 1 + C 2 t ) e 5t y= dx dt 7x=( C 2 2 C 1 2 C 2 t ) e 5t

Determinamos C1 y C2 con las condiciones iniciales

{ 2= C 1 5= C 2 2 C 1 C 1 =2 C 2 =1 x=( 2t ) e 5t y=( 5+2t ) e 5t

Intentamos resolver este sistema con la función dsolve de MATLAB

>> syms x y t;
>> eq1='Dx=7*x+y';
>> eq2='Dx=-4*x+3*y';
>> [x1 y1]=dsolve(eq1,eq2,'x(0)=2','y(0)=-5')
Warning: more equations than unknowns: trying heuristics to reduce 
to square system [ode::solve_intern] 

Obtenemos un aviso Warning y no aparece la solución analítica

Escribimos el sistema de las dos ecuaciones diferenciales lineales en forma matricial

( dx dt dy dt )=( 7 1 4 3 )( x y ) u ˙ =Au

Calculamos los valores y vectores propios de la matriz A mediante la función eig de MATLAB

>> A=sym('[7,1;-4,3]');
>> [V D]=eig(A)
V =
 -1/2
    1
D =
[ 5, 0]
[ 0, 5]

Los valores propios son λ1=5 y λ2=5, repetidos y el correspondiente vector propio son v1=[-1/2, 1] . La solución del sistema de ecuaciones diferenciales se escribe

x= C 1 v 1 e λt + C 2 ( t v 1 + v 2 ) e λt

El vector v2 se calcula del siguiente modo:

(ΑλI) v 2 = v 1 ( 7 1 4 3 )5( 1 0 0 1 )=( 2 1 4 2 ) ( 2 1 4 2 )( v 2x v 2y )=( 1/2 1 )

obtenemos la misma ecuación, una relación entre las dos componentes del vector v2, 2v2x+v2y=-1/2. Un posible vector sería v2=[0 -1/2].

Determinamos C1 y C2 con las condiciones iniciales

( x y )= C 1 ( 1/2 1 ) e 5t + C 2 ( t( 1/2 1 )+( 0 1/2 ) ) e 5t ( 2 5 )= C 1 ( 1/2 1 )+ C 2 ( 0 1/2 ){ C 1 =4 C 2 =2 ( x y )=4( 1/2 1 ) e 5t +2( t( 1/2 1 )+( 0 1/2 ) ) e 5t x=(2t) e 5t y=(5+2t) e 5t

Los casos de raíces repetidas tres veces o más han de ser estudiados cuidadosamente, remitimos a la segunda referencia al final de esta página.

Ejemplos

Oscilaciones amortiguadas

Sea la ecuación diferencial de segundo orden que describe un oscilador amortiguado

d 2 x d t 2 +4 dx dt +68x=0 s 2 +4s+68=0{ s 1 =2+8i s 2 =28i x= C 1 e (2+8i)t + C 2 e (28i)t

Escribimos la ecuación diferencial de segundo orden en forma de sistema de dos ecuaciones diferenciales de primer orden y en forma matricial

{ dx dt =y dy dt =68x4y ( dx dt dy dt )=( 0 1 68 4 )( x y )

Calculamos los valores y vectores propios de la matriz A mediante la función eig de MATLAB

>> A=sym('[0,1;-68,-4]');
>> [V D]=eig(A)
V =
[ (2*i)/17 - 1/34, - (2*i)/17 - 1/34]
[               1,                 1]
D =
[ - 8*i - 2,       0]
[         0, 8*i - 2]

Los valores propios son λ1=-2-8i y λ2=-2+8i. y los correspondientes vectores propios son v1=[(-1+4i)/34, 1] y v2=[(-1-4i)/34, 1], o mejor, v1=[1, (-2-8i)] y v2=[1, (-2+8i)].

La solución del sistema de ecuaciones diferenciales se escribe

x= C 1 v 1 e λ 1 t + C 2 v 2 e λ 2 t ( x y )= C 1 ( 1 28i ) e (28i)t + C 2 ( 1 2+8i ) e (2+8i)t x= C 1 e (28i)t + C 2 e (2+8i)t y=(28i) C 1 e (28i)t +(2+8i) C 2 e (2+8i)t

Dadas las condiciones iniciales, posición y velocidad inicial, calculamos las constantes C1 y C2.

t=0{ x=1 dx dt =y=0 C 1 = 4+i 8 C 2 = 4i 8

Obtenemos las expresiones de x e y realizando las siguientes operaciones en la ventana de comandos

>> syms t;
>> x=(4+i)*exp((-2-8*i)*t)/8+(4-i)*exp((-2+8*i)*t)/8;
>> simplify(x)
ans =(4*cos(8*t) + sin(8*t))/(4*exp(2*t))
>> y=(-2-8*i)*(4+i)*exp((-2-8*i)*t)/8+(-2+8*i)*(4-i)*exp((-2+8*i)*t)/8; 
>> simplify(y)
ans =-(17*sin(8*t))/(2*exp(2*t))

Utilizamos el primer script cambiando los valores de los elementos de la matriz A y del vector x0 de los valores iniciales, obtenemos la expresión de x y de y=dx/dt en función del tiempo.

....
A=sym('[3,-13;5,1]');
x0=sym('[1;0]'); %condiciones inciales
....

Corremos el script modificado en la ventana de comandos

Resultado
ans =
 (4*cos(8*t) + sin(8*t))/(4*exp(2*t))
          -(17*sin(8*t))/(2*exp(2*t))

Series de desintegración radioactiva

Sea una sustancia radioactiva A que al desintegrarse produce una sustancia radioactiva B, que al desintegrarse produce otra sustancia radioactiva C, que al desintegrarse da lugar a una sustancia estable D. El primer proceso A--->B de la serie está caracterizado por la constante λ1, el segundo B--->C, por la constante λ2 y el tercero C--->D, por la constante λ3, tal como se ve en la figura. Las ecuaciones diferenciales que describen la variación con el tiempo t del número de núcleos de la sustancia A, x1, de la sustancia B, x2, de la sustancia C, x3 y de la sustancia estable D, x4 son

d x 1 dt = λ 1 x 1 d x 2 dt = λ 1 x 1 λ 2 x 2 d x 3 dt = λ 2 x 2 λ 3 x 3 d x 4 dt = λ 3 x 3

Resolveremos el sistema de cuatro ecuaciones diferenciales con las siguientes condiciones iniciales: en el instante t=0, el número de núcleos de A es x1=x10, el de B es x2=0, el de C, x3=0, y el de D, x4=0

Escribimos el sistema de ecuaciones diferenciales de forma matricial y supondremos que λ1λ2λ3

( d x 1 dt d x 2 dt d x 3 dt d x 4 dt )=( λ 1 0 0 0 λ 1 λ 2 0 0 0 λ 2 λ 3 0 0 0 λ 3 0 )( x 1 x 2 x 3 x 4 )

Elaboramos un script para hallar la solución del sistema de ecuaciones diferenciales y representar x1, x2, x3 y x4 en función del tiempo t

syms k1 k2 k3 t;
A=[-k1,0,0,0;k1,-k2,0,0;0,k2,-k3,0;0,0,k3,0];
A=subs(A,{k1,k2,k3},{0.1,0.05,0.01}); 
[V,D]=eig(A); %valores propios y vectores propios
x0=[100;0;0;0];  % condiciones iniciales
C=V\x0;  %coeficientes 
C=C.*exp(diag(D)*t);
x=V*C;
disp('Resultado')
x=simplify(x)
%gráfica
hold on
for i=1: length(x)
    ezplot(x(i),[0,150]);
end
ylim([0,100])
legend('x_1','x_2','x_3','x_4', 'location','north')
hold off
grid on
xlabel('t')
ylabel('x_1,x_2,x_3,x_4')
title('Serie de desintegración radioactiva A->B->C->D')

x =
                                                  100*exp(-t/10)
                                  200*exp(-t/10)*(exp(t/20) - 1)
     (1000*exp(-t/10))/9 - 250*exp(-t/20) + (1250*exp(-t/100))/9
 50*exp(-t/20) - (100*exp(-t/10))/9 - (1250*exp(-t/100))/9 + 100

Obtenemos el mismo resultado, resolviendo el sistema de cuatro ecuaciones diferenciales con dsolve

syms x1 x2 x3 x4 t;
eq1='Dx1=-0.1*x1';
eq2='Dx2=0.1*x1-0.05*x2';
eq3='Dx3=0.05*x2-0.01*x3';
eq4='Dx4=0.01*x3';
[x1,x2,x3,x4]=dsolve(eq1,eq2,eq3,eq4,'x1(0)=100','x2(0)=0','x3(0)=0'
,'x4(0)=0')

Oscilaciones de tres partículas

Vamos a estudiar un sistema formado por tres partículas de la misma masa m unidas por muelles elásticos iguales de constante k, tal como se muestra en la figura.

Supongamos que la primera partícula se desplaza x1 de la posición de equilibrio, que la segunda se desplaza x2 y la tercera, se desplaza x3.

En las figuras, se muestra las fuerzas sobre cada una de las partículas

Ecuación del movimiento de la primera partícula

m d 2 x 1 d t 2 =k x 1 +k( x 2 x 1 )

Ecuación del movimiento de la segunda partícula

m d 2 x 2 d t 2 =k( x 2 x 1 )+k( x 3 x 2 )

Ecuación del movimiento de la tercera partícula

m d 2 x 3 d t 2 =k( x 3 x 2 )k x 3

Para simplificar la notación, escribimos el cociente k/m como k, el sistema de tres ecuaciones diferenciales de segundo orden se puede convertir en un sistema homogéneo de seis ecuaciones diferenciales de primer orden cuya representación matricial es la siguinte:

d x 1 dt = y 1 d y 1 dt =2k x 1 +k x 2 d x 2 dt = y 2 d y 2 dt =k x 1 2k x 2 +k x 3 d x 3 dt = y 3 d y 3 dt =k x 2 2k x 3 ( d x 1 dt d y 1 dt d x 2 dt d y 2 dt d x 3 dt d y 3 dt )=( 0 1 0 0 0 0 2k 0 k 0 0 0 0 0 0 1 0 0 k 0 2k 0 k 0 0 0 0 0 0 1 0 0 k 0 2k 0 )( x 1 y 1 x 2 y 2 x 3 y 3 )

Calculamos los valores y vectores propios de la matriz A mediante la función eig de MATLAB

>> syms k;
>> A=[0,1,0,0,0,0;-2*k,0,k,0,0,0;0,0,0,1,0,0;k,0,-2*k,0,k,0;0,0,0,0,0,1
;0,0,k,0,-2*k,0];
>> [V D]=eig(A)
 V =...
 D=...

Podemos observar que los valores propios se corresponden con las frecuencias de los modos normales de vibración. La solución de este sistema de ecuaciones diferenciales se escribe

x= i=1 6 C i v i e λ i t λ 1 = k( 2 2 ) i λ 2 = k( 2 2 ) i λ 3 = k( 2+ 2 ) i λ 4 = k( 2+ 2 ) i λ 5 = 2k i λ 6 = 2k i

vi es el vector propio correspondiente al valor propio λi. Dadas las condiciones iniciales, posición y velocidad inicial de cada una de las tres partículas, calculamos las constantes C1... C6 y obtenemos la expresión de la posición y velocidad de cada una de las partículas en función del tiempo.

Las condiciones iniciales las especificamos en un vector x0, que tiene seis elementos: [x01,v01,x02,v02,x03,v03]. xi significa posición inicial y vi velocidad incicial de la partícula i.

Creamos un script para resolver este problema y representar x1, x2 y x3 en función del tiempo t. Se sugiere probar con otras condicions iniciales, por ejemplo.

x 01 =1 x 02 = 2 x 03 =1 x 01 =1 x 02 =0 x 03 =1 x 01 =1 x 02 = 2 x 03 =1

syms k t;
A=[0,1,0,0,0,0;-2*k,0,k,0,0,0;0,0,0,1,0,0;k,0,-2*k,0,k,0;0,0,0,0,0,1;
0,0,k,0,-2*k,0];
%para cambiar el valor de k/m, es distinto a subs(A,k,1)
A=subs(A,k,sym('1')); 
[V D]=eig(A); %valores propios y vectores propios
x0=sym('[1;0;0;0;-1;0]');  %para cambiar las condiciones iniciales
%x0=sym('[1;0;sqrt(2);0;1;0]');  %para cambiar las condiciones iniciales
C=V\x0;  %coeficientes C1 y C2
C=C.*exp(diag(D)*t); %multiplica cada coeficiente por la exp
x=V*C;
disp('Resultado')
x=simplify(x)
%gráfica
hold on
ezplot(x(1));
ezplot(x(3));
ezplot(x(5));
hold off
grid on
title('Tres osciladores acoplados')

Corremos el script en la ventana de comandos

Resultado
x = 
          cos(2^(1/2)*t)
 -2^(1/2)*sin(2^(1/2)*t)
                       0
                       0
         -cos(2^(1/2)*t)
  2^(1/2)*sin(2^(1/2)*t)

En este modo normal de oscilación las ecuaciones del movimiento de cada partícula son:

x 1 =cos( 2 t ) x 2 =0 x 3 =cos( 2 t )

La segunda partícula permanece en reposo, tal como podemos apreciar en la figura: en rojo, la primera partícula, en azul, la segunda y en negro, la tercera.

Referencias

Paul Dawkins. Differential equations.

Steven J. Desjardins, Rémi Vaillancourt. Ordinary differential equations. Laplace transforms and Numerical methods for engineers.. University of Ottawa (2011). www.site.uottawa.ca/~remi/ode.pdf.

Barenkov, Demidovich, Efimenko...Problemas y ejercicios de Análisis Matemático. Paraninfo (1975)