Documentos de Académico
Documentos de Profesional
Documentos de Cultura
An 10 Ecuaciones Diferenciales Pvi
An 10 Ecuaciones Diferenciales Pvi
Ecuaciones Diferenciales
Ordinarias
Problemas de Valor
Inicial
Jesús Abel Mejía Marcacuzco, Ph.D.
Lima - Perú
ECUACIONES DIFERENCIALES ORDINARIAS
El comportamiento dinámico de los sistemas implica
desplazamientos, velocidades y aceleraciones y sus
derivadas respecto al tiempo de estas cantidades. Una
ecuación en la que intervienen una o más derivadas
ordinarias de la función incógnita se denomina ecuación
diferencial ordinaria (EDO). El orden de la ecuación está
determinado por el orden de la derivada más alta.
Los problemas de EDO se clasifican en problemas de valor
inicial y problemas de valor en la frontera, dependiendo de
cómo se especifican las condiciones en los extremos del
dominio. Todas las condiciones de un problema de valor inicial
se especifican en el punto inicial. El problema se convierte en
uno de valor en la frontera si las condiciones se extienden
entre los puntos inicial y final. Las EDO en el dominio del
tiempo son problemas de valor inicial, así que todas las
condiciones se especifican en el momento inicial, como t = 0.
PROBLEMAS DE VALOR INICIAL
EDO de Primer Orden
El problema de valor inicial de una EDO de primer orden puede
y1 y0 hy0' y0 hf y0 ,t0
Recursivamente la ecuación
puede representarse como: y 2 y1 hf y1 ,t1
y3 y 2 hf y2 ,t 2
.
y n yn1 hf y n1 , t n1
Ejemplo:
Solución
a) Los primeros dos incrementos de tiempo de los cálculos
con h = 0.01 son:
t0 0, y0 y0 5
t1 0.01, y1 y0 hy0' 5 0.01 205 7 exp 0 4.07
t2 0.02, y2 y1 hy1' 4.07 0.01 204.07 exp 0.01 3.326
b) La solución analítica se obtiene de resolver la ecuación:
dy 20t dy 0.5t 20t
20 y 7e 0.5 t Multiplicando por e 20t e 20 ye 20t
7 e e
dt dt
d ye 20t
7e
19.5t ye 20t 7 19.5t
e C y
7 0.5t 90.5 20t
e e
dt 19 .5 19.5 19.5
C = 90.5/19.5 calculado para t = 0; y =5
k
y n 1
h
2
y n f y nk11 , t n 1 f y n , t n
yn01
k
Donde yn 1 es la k-ésima aproximación iterativa para yn 1 y
k
es una estimación inicial de yn 1 . La iteración termina cuando yn 1
es menor que k 1 para para una tolerancia especificada.
y n1
Si tomamos como estimación inicial yn, el primer paso de la
iteración será idéntico al método de Euler hacia delante. Si sólo
se emplean dos pasos de iteración, el método se convierte en el
método de Runge-Kutta de segundo orden.
Ejemplo
Solución
a) El esquema de Euler modificado se escribe:
h
yn 1 yn yn 1 yn 2
2
1.5 1.5
y su solución iterativa basada en sustituciones sucesivas es:
h
2
ynk1 yn ynk11 y
1.5
n
1.5
2
Donde k es el número de iteración.
La iteración para y1 comienza con la estimación inicial y continua así:
1
y1 10 0.1 / 2 10 10 2 6.93772
1.5 1.5
y12 10 0.1 / 2 6.93772 10 2 7.60517
1.5 1.5
y 10 0.1 / 2 7.60517
10 2 7.47020
3 1.5 1.5
1
...
y1 10 0.1 / 2 7.49326 10 2 7.49326
1.5 1.5
b) El cálculo hasta t = 1.0, se muestra a continuación:
Y(t=0) Y(t=0.1) Y(t=0.2) Y(t=0.3) Y(t=0.4) Y(t=0.5) Y(t=0.6) Y(t=0.7) Y(t=0.8) Y(t=0.9) Y(t=1.0)
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
10 7.49326 5.85864 4.73452 3.92990 3.33574 2.88599 2.53861 2.26584 2.04868 1.87382
6.93772 5.54207 4.54058 3.80434 3.25083 2.82650 2.49571 2.23413 2.02477 1.85545 1.71732
7.60518 5.91532 4.76584 3.94841 3.34730 2.89353 2.54371 2.26940 2.05124 1.87570 1.73304
7.47020 5.84832 4.72940 3.92714 3.33416 2.88502 2.53800 2.26543 2.04841 1.87362 1.73149
7.49800 5.86051 4.73535 3.93031 3.33596 2.88611 2.53868 2.26588 2.04871 1.87384 1.73165
7.49229 5.85830 4.73438 3.92983 3.33571 2.88597 2.53860 2.26583 2.04868 1.87382 1.73163
7.49346 5.85870 4.73454 3.92990 3.33575 2.88599 2.53861 2.26584 2.04869 1.87382 1.73163
7.49322 5.85863 4.73451 3.92989 3.33574 2.88599 2.53861 2.26584 2.04868 1.87382 1.73163
7.49327 5.85864 4.73452 3.92990 3.33574 2.88599 2.53861 2.26584 2.04868 1.87382 1.73163
7.49326 5.85864 4.73452 3.92990 3.33574 2.88599 2.53861 2.26584 2.04868 1.87382 1.73163
7.49326 5.85864 4.73452 3.92990 3.33574 2.88599 2.53861 2.26584 2.04868 1.87382 1.73163
t y
0.0 10.0
0.1 7.49326
0.2 5.85864
0.3 4.73452
0.4 3.92990
0.5 3.33574
0.6 2.88599
0.7 2.53861
0.8 2.26584
0.9 2.04868
1.0 1.87382
c) El Archivo-M para la solución del problema en MATLAB y los
resultados, se muestran a continuación. En el guión, la solución
del método de Euler hacia adelante se denota con yf, mientras
que la del método modificado es ym. La ecuación de Euler
modificada se resuelve iterativamente por el método de
sustitución sucesiva con el número de iteraciones limitado a 10
como máximo. Si el número de iteración rebasa 9, se imprime
un mensaje.
6
-- Euler hacia adelante – Euler modificado
y
1
0 0.2 0.4 0.6 0.8 1 1.2 1.4
t
Resultados de cálculo
Método de Euler hacia adelante y de Euler modificado
Método de Euler hacia atrás
Se basa en la aproximación de diferencia hacia atrás y
tiene el mismo grado de precisión que el método de Euler
hacia delante:
t 0, u0 u0 0
v0 u' 0 1
y' f y, t
y u
y u f - ay v c
Donde
v y
y n 1 y n hf y n , t n
A continuación se presenta el código en MATLB para obtener
la solución, cuyos resultados se muestran en la figura
% Archivo ejemplo axis([0 5 -1 1])
clear, clf, hold off plot(t,y(1,:),t,y(2,:),':')
h=0.05; t_max=5; n=1; xlabel('tiempo (s)'); ylabel('Y y V')
y(:,1)=[0;1]; L=length(t);
t(1)=0; text(t(L), y(1,L), 'Y, desplazamiento')
while t(n)<t_max text(t(L), y(2,L), 'V, velocidad')
y(:,n+1)=y(:,n)+h*f_def(y(:,n),t);yb=y; % Archivo función: f_def.m
t(n+1)=t(n)+h; function f=f_def(y,t)
n=n+1; a=5; c=20;
End f=[y(2);(-a*abs(y(2))*y(2)-c*y(1))];
1
0.8
0.6
0.4
YyV
0.2
0 Y, desplazamiento
V, velocidad
-0.2
-0.4
-0.6
0 1 2 3 4 5 6
tiempo (s)
Método de Runge-Kutta de Segundo Orden
En los métodos de Runge-Kutta, la precisión se incrementa por
el uso del método de integración numérica y los errores se
reducen con mayor rapidez al reducirse h. Así para la ecuación
diferencial ordinaria siguiente:
y' (t ) f y, t y0 y0
Para calcular yn+1 con un valor conocido de yn, integramos la
ecuación anterior en el intervalo tn t tn+1 para obtener:
f y, t dt
tn 1
y n 1 y n
tn
Integrando, mediante la regla trapezoidal, el término:
f y, t dt f yn , tn f yn 1 , tn 1
t n 1 h
tn 2
Donde h = tn+1 – tn
yn 1 yn
h
f yn , tn f yn1 , tn1 yn h f yn , tn f y n1 , tn1
2 2
yn 1 yn hf yn , tn
estimada por el método
de Euler hacia delante
y n f y n , t n f y n 1 , t n 1
h
y n 1
2
En una forma más convencional:
k1 hf yn , tn
yn 1 yn k1 k2
1
2 k2 hf yn k1 , tn 1
dI t
L RI t E I 0 0
dt
Solución:
Primero rescribimos la ecuación del modo siguiente:
R 20 E 10
400 200
L 50 10 3 L 50 10 3
f I , t
dI
f I , t
R E
Donde: I 400 I 200
dt L L
El método de Runge-Kutta de segundo orden se convierte en:
t 0.0002,
k1 0.0001 4000.0196 200 0.019216
k2 0.0001 4000.0196 0.019216 200 0.018447
I 2 I1 1 / 2k1 k2 0.0196 1 / 20.019216 0.018447 0.038431
t k1 k2 I
k1 hf yn , tn
0.0000 0.00000
0.0001 0.02000 0.01920 0.01960
k2 hf yn k1 , tn 1
0.0002 0.01922 0.01845 0.03843
0.0003 0.01846 0.01772 0.05653
0.0004 0.01774 0.01703 0.07391
0.0005 0.01704 0.01636 0.09061
yn 1 yn k1 k2
0.0006 0.01638 0.01572 0.10666 1
0.0007 0.01573 0.01510 0.12208
0.0008 0.01512 0.01451 0.13689 2
0.0009 0.01452 0.01394 0.15113
0.0010 0.01395 0.01340 0.16480
0.0011 0.01341 0.01287 0.17794
0.0012 0.01288 0.01237 0.19057
0.0013 0.01238 0.01188 0.20270
0.0014 0.01189 0.01142 0.21435
0.0015 0.01143 0.01097 0.22555
0.0016 0.01098 0.01054 0.23631
0.0017 0.01055 0.01013 0.24664
0.0018 0.01013 0.00973 0.25658
0.0019 0.00974 0.00935 0.26612
. . . .
0.0200 0.00001 0.00001 0.49983
El resto del cálculo se realiza con MATLAB:
% Archivo ejemplo13_5.m % Función fn13_5.m
clear, clf, hold off function f=fn13_5(I,RL,EL)
R=20; %ohmios f=-RL*I+EL;
L=50e-3; %Herz
E=10; %Voltios
y(1)=0; t(1)=0;
h=0.1e-3;
n=1;
y_rec(1)=y; t_rec(1)=0; t=0; 0.5
RL=R/L; EL=E/L; 0.45
while t(n)<0.02 0.4
k1=h*fn13_5(y(n),RL,EL); 0.35
k2=h*fn13_5(y(n)+k1,RL,EL); 0.3
y(n+1)=y(n)+0.5*(k1 + k2);
I (A)
0.25
t(n+1)=n*h; 0.2
n=n+1; 0.15
end 0.1
plot(t,y) 0.05
xlabel('tiempo (s)') 0
0 0.005 0.01 0.015 0.02
ylabel('I (A)') tiempo (s)
Ejemplo
dT
dt
A
CV
2974 T 4 hc 297 T ; T 0 473
k1 hf yn , tn
t k1 k2 T
0.000 473.000
k2 hf yn k1 , tn 1
1.000 -6.664 -6.363 466.486
2.000 -6.370 -6.087 460.258
3.000 -6.093 -5.826 454.298
yn 1 yn k1 k2
4.000 -5.832 -5.580 448.593 1
5.000 -5.585 -5.347 443.127
6.000 -5.352 -5.126 437.888 2
7.000 -5.131 -4.917 432.864
8.000 -4.922 -4.719 428.044
9.000 -4.723 -4.531 423.417
10.000 -4.535 -4.352 418.973
11.000 -4.356 -4.182 414.705
12.000 -4.185 -4.019 410.602
13.000 -4.023 -3.865 406.659
14.000 -3.868 -3.717 402.866
15.000 -3.720 -3.577 399.218
16.000 -3.579 -3.442 395.707
17.000 -3.445 -3.314 392.328
18.000 -3.316 -3.191 389.074
19.000 -3.193 -3.073 385.941
. . . .
180.000 -0.016 -0.015 297.469
Si el miembro derecho de la EDO es una función no lineal, como es el caso
en el presente problema, es recomendable escribir un archivo M de función
para calcular el miembro derecho. Los resultados de cálculo y el código en
MATLAB, se muestra a continuación.
T (K)
380
Arcv=A/(ro*C*V); Epsg=epsi*sig;
360
while t(n)<180
k1=h*fn13_6(T(n),Arcv,Epsg,hc); 340
k2=h*fn13_6(T(n)+k1,Arcv,Epsg,hc); 320
T(n+1)=T(n)+0.5*(k1+k2); 300
t(n+1)=t(n)+h; 280
0 20 40 60 80 100 120 140 160 180
n=n+1; tiempo (s)
end
plot(t,T); xlabel('tiempo (s)'),ylabel('T (K)')
% Función fn13_6.m
function f=fn13_6(TB,Arcv,Epsg,hc)
f=Arcv*(Epsg*(297^4-TB^4)+hc*(297-TB));
Método de Runge-Kutta de tercer orden
f y, t dt
El método de Runge-Kutta de tercer orden se deduce tn 1
aplicando un esquema de integración numérica de y n 1 y n
tn
orden superior al segundo término de la ecuación:
y n 1 y n f y n , t n 4 f y n 1 / 2 , t n 1 / 2 f y n 1 , t n 1
h
6
y n 1 / 2 y n f y n , t n
y n1/ 2 estima yn 1/ 2 y se obtiene por el método h
de Euler hacia adelante, así: 2
y n 1 estima y n 1 por: y n1 yn hf yn , tn
y n1 yn hf y n1/ 2 , tn1/ 2
k1 hf yn , t n
h
y n k1 4k 2 k 3
1 k1
y n 1 2
k hf n
y , t n
6 2 2
k3 hf yn k1 1 k 2 , t n h
k1 hf yn , t n
k1 h
y n k1 4k 2 k 3
1
y n 1 k 2 hf yn , t n
6 2 2
k3 hf yn k1 2k 2 , t n h
Método de Runge-Kutta de cuarto orden
Basada en la regla 1/3 de Simpson:
k1 hf yn , t n
k 2 hf yn k1 , t n h
2 2
y n k1 2k 2 2k 3 k 4
1
y n 1
6 k hf y k 2 , t h
3
n
2
n
2
k 4 hf yn k3 , t n h
Basada en la regla 3/8 de Simpson: k1 hf yn , t n
k 2 hf yn k1 , t n h
3 3
y n k1 3k 2 3k 3 k 4
1
y n 1 k hf y k1 k 2 , t 2h
8
3
n
3 3
n
3
k 4 hf yn k1 k 2 k3 , t n h
Ejemplo: Calcule y(1) con el método de Runge-Kutta de cuarto orden
con h = 1, para:
y 0 1
dy 1
y' ,
dt 1 y 2
f y, t
1
Solución: Establecemos:
1 y2
con y0 =1 y t0 = 0. Puesto que sólo tenemos un intervalo, la respuesta se
obtiene con:
t k1 k2 k3 k4 y
k1 hf y0 , t 0 1/1 1 0.5 0.0 1
1.0 -0.5000 -0.6400 -0.6838 -0.9091 0.32388
2.0 -0.9051 -0.9837 -0.9726 -0.7038 -0.59636
h
k 2 hf y0 1 , t0 1 / 1 0.75 0.64
k 2 3.0 -0.7377 -0.5177 -0.5776 -0.4205 -1.15448
2 2 4.0 -0.4287 -0.3480 -0.3617 -0.3031 -1.51301
5.0 -0.3040 -0.2651 -0.2697 -0.2393 -1.78183
h
k3 hf y0 2 , t0 1 / 1 10.68 0.6838
k 2 6.0
7.0
-0.2395
-0.2000
-0.2166
-0.1848
-0.2187
-0.1859
-0.1999
-0.1730
-2.00018
-2.18593
2 2
8.0 -0.1731 -0.1622 -0.1629 -0.1534 -2.34871
k4 hf y0 k3 , t0 h 1 / 1 0.3161 0.9091
2 9.0
10.0
-0.1535
-0.1385
-0.1453
-0.1321
-0.1457
-0.1324
-0.1385
-0.1266
-2.49437
-2.62668
y1 y0
1
k1 2k2 2k3 k4 1 1 0.5 20.64 20.6838 0.9091 0.3238
6 6
Ejemplo: Resolver mediante el método de Runge-Kutta de cuarto orden:
dy t y y 3et / 2 2 t
y(0) = 1; h = 0.25 0 ≤ t ≤ 3
Solución
analítica
dt 2
ty
Solución: Establecemos: f y, t
2
k1 hf ( yi , ti ) y
t k1 k2 k3 k4 y %error
analítico
0.00 1 1.00000 0.00000
k h 0.25 -0.1250 -0.1016 -0.1030 -0.0809 0.89749 0.89749 0.00008
k 2 hf ( yi 1 , ti ) 0.50 -0.0809 -0.0603 -0.0615 -0.0420 0.83640 0.83640 0.00016
2 2 0.75 -0.0421 -0.0238 -0.0249 -0.0077 0.81187 0.81187 0.00022
1.00 -0.0077 0.0084 0.0074 0.0226 0.81959 0.81959 0.00025
1.25 0.0226 0.0368 0.0359 0.0493 0.85579 0.85578 0.00026
k2 h
k3 hf ( yi , ti ) 1.50 0.0493 0.0618 0.0610 0.0729 0.91710 0.91710 0.00026
2 2 1.75 0.0729 0.0839 0.0832 0.0937 1.00059 1.00059 0.00025
2.00 0.0937 0.1034 0.1028 0.1121 1.10364 1.10364 0.00023
2.25 0.1120 0.1207 0.1201 0.1283 1.22396 1.22396 0.00020
k4 hf ( yi k3 , ti h) 2.50 0.1283 0.1359 0.1354 0.1426 1.35952 1.35951 0.00018
2.75 0.1426 0.1493 0.1489 0.1552 1.50852 1.50852 0.00016
3.00 0.1552 0.1611 0.1607 0.1663 1.66939 1.66939 0.00014
1
yi 1 yi ( k1 2k 2 2k3 k 4 )
6
Método de Runge-Kutta de cuarto orden para un conjunto
de dos ecuaciones:
un 1 un k1 2k 2 2k 3 k 4
1
u ' f u, v, t 6
v n 1 v n m1 2m2 2m3 m4
1
v' g u, v, t 6
k1 hf un , vn , t n m1 hg un , vn , t n
k m h k1 m1 h
k 2 hf un 1 vn 1 , t n m2 hg un vn , t n
2 2 2 2 2 2
k2 m2 h k m h
k3 hf un vn , tn m3 hg un 2 vn 2 , t n
2 2 2 2 2 2
m3 m3
k 4 hf un k3 vn , tn h m4 hg un k3 vn , tn h
2 2
Escribiendo la ecuación en forma vectorial:
u f
y' f y,t y f
v g
k1 hf yn , t n
k 2 hf yn k1 , t n h
2 2
y n k1 2k 2 2k 3 k 4
1
y n 1
6 k hf y k 2 , t h
3
n
2
n
2
k 4 hf yn k3 , t n h
Ejemplo
Mu ' ' Bu ' ku 0
Resolver el problema del
Sistema de Resorte-Masa, con u 0 1
u' 0 0
Runge-Kutta de cuarto orden.
Solución
u' f v u 0 1
un 1 un k1 2k 2 2k 3 k 4
1
6
v n 1 v n m1 2m2 2m3 m4
1
6
Para t = 0 Mu ' ' Bu ' ku 0
u0 u 0 1 u' f v u 0 1
v0 u ' 0 0 v' g B / M v k / M u 20v 200u v0 0
Para t = 0.025
k 2 hf u1 k1 / 2, v1 m1 / 2, t1 h / 2 hv1 m1 / 2
0.025 3.8541666 2.809244 / 2 0.1314697
m2 hg u1 k1 / 2, v1 m1 / 2, t1 h / 2 h 20v1 m1 / 2 200u1 k1 / 2
0.025 20 3.85416 2.809244 / 2 2000.947266 0.96354 / 2 1.866054
k3 hf u1 k 2 / 2, v1 m2 / 2, t1 h / 2 hv1 m2 / 2
0.025 3.85416 1.866054 / 2 0.1196797
u(m) y v(m/s)
-2
y(:,1)=[1;0]; t(1)=0; % condición inicial -3
M=[0,1;-b,-a]; -4
Velocidad, V
while t(n)<=1 -5
-6
k1=h*M*y(:,n);
-7
k2=h*M*(y(:,n)+k1/2);
-8
k3=h*M*(y(:,n)+k2/2); 0 0.1 0.2 0.3
t(s)
0.4 0.5 0.6 0.7
k4=h*M*(y(:,n)+k3);
y(:,n+1)=y(:,n)+(k1+2*k2+2*k3+k4)/6;
t(n+1)=n*h;
n=n+1;
end
plot(t,y(1,:),'-',t,y(2,:),':');
xlabel('t(s)'); ylabel('u(m) y v(m/s)');
text(t(5),y(1,5)+0.3, 'Desplazamiento,
u','Fontsize',[10])
text(t(8),y(2,7), 'Velocidad, V','Fontsize',[10])
axis([0,0.7,-8,2])
Método de Range-Kutta para EDO de segundo orden:
Similar al método de Euler. Así para la siguiente EDO de segundo orden:
k1 hf un ,t n
y n k1 k 2
1
y n 1
2 k 2 hf un ,k1 ,t n 1
Si a, b y q son constantes o funciones exclusivamente de t, la ecuación
puede escribirse así:
0 1 0
y' Mf S M S
donde:
b a q
k1 hMy1 S
y n k1 k 2
1
y n 1
2 k 2 hM y1 k1 1 S
Ejemplo
Una caja rectangular de masa M = 0.5 kg se fija al extremo inferior de un
sistema de resorte-amortiguador sin masa, como se ilustra en la figura. El
amortiguador ejerce una fuerza de R = -Bdu/dt sobre la caja, siendo B la
constante de amortiguación, u la velocidad y K la constante del resorte. La
ecuación del movimiento es:
Mu ' ' Bu ' ku 0 (A)
u 0 1
u' 0 0
B = 10 k = 100
N.s/m2
a) Calcule u(t) para 0 < t 0.05 s N/m
Para t = 0.025
u 0 1
y' Mf donde: y Mf
v -b a
El Archivo-M se elabora con base en la ecuación. El código en MATLAB y los
resultados del programa se presentan a continuación:
% Archivo ejemplo13_7
plot(t,y(1,:),'-',t,y(2,:),':');
clear, clf, hold off
xlabel('t(s)'); ylabel('u(m) y v(m/s)');
M=0.5; k=100; B=10; a=B/M;
text(0.1,0.6, 'Desplazamiento,
b=k/M; n=1; h=0.025;
u','Fontsize',[8])
y(:,1)=[1;0]; t(1)=0; % condición inicial
text(0.3,-1.8, 'Velocidad, V','Fontsize',[8])
M=[0,1;-b,-a];
while t(n)<=1
k1=h*M*y(:,n); 1
k2=h*M*(y(:,n)+k1); Desplazamiento, u
y(:,n+1)=y(:,n)+0.5*(k1+k2); 0
t(n+1)=n*h;
n=n+1; -1
end Velocidad, V
u(m) y v(m/s)
-2
-3
-4
-5
-6
-7
0 0.2 0.4 0.6 0.8 1
t(s)