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.
Resolvemos el sistema de forma analítica
Determinamos C1 y C2 a partir de las condiciones iniciales
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
Calculamos los valores y vectores propios de la matriz A mediante la función
>> 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
Determinamos C1 y C2 a partir de las condiciones iniciales
Elaboramos un script para obtener la solución final de x denominada
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
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
Calculamos los valores y vectores propios de la matriz A mediante la función
>> 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
Determinamos C1 y C2 con las condiciones iniciales
El cálculo de las expresiones de x e y en función del tiempo t es bastante largo. Podemos utilizar la función
>> 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
Resolvemos el sistema de forma analítica
Determinamos C1 y C2 con las condiciones iniciales
Intentamos resolver este sistema con la función
>> 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
Calculamos los valores y vectores propios de la matriz A mediante la función
>> 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
El vector v2 se calcula del siguiente modo:
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
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
Escribimos la ecuación diferencial de segundo orden en forma de sistema de dos ecuaciones diferenciales de primer orden y en forma matricial
Calculamos los valores y vectores propios de la matriz A mediante la función
>> 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
Dadas las condiciones iniciales, posición y velocidad inicial, calculamos las constantes C1 y C2.
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
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
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
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
|
![]() |
Ecuación del movimiento de la segunda partícula
|
![]() |
Ecuación del movimiento de la tercera partícula
|
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:
Calculamos los valores y vectores propios de la matriz A mediante la función
>> 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
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.
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:
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)