Métodos Numéricos: Ecuaciones Diferenciales Ordinarias: Problemas de Valor Inicial (PVI) Cristian Castro Pérez cristian.castro@unsch.edu.pe "Nos asomamos a veces a lo que fuimos antes de ser esto que vaya a saber si somos" - Julio Cortázar Ingeniería Civil F.I.M.G.C.-U.N.S.C.H. Métodos Numéricos enIngeniería Civil Solución (numérica) a Ecuaciones Diferenciales Ordinarias: Problemas de Valor Inicial (PVI) Ecuaciones diferenciales ordinarias Una ecuación diferencial ordinaria (ODE en inglés) de orden n se puede escribir de la siguiente manera: y (n) = f (x, y, y ′ , . . . , y (n−1) ) (1) con condiciones iniciales y(a) = α1 , y ′ (a) = α2 , ... , y (n−1) (a) = αn . (2) y describe una gran variedad de sistemas dinámicos. Métodos Numéricos 2 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La ecuación (1) y las condiciones iniciales (2) es conocido como un “problema de valores iniciales”, puede transformarse en un sistema de n ecuaciones diferenciales de primer orden. Usando la notación y1 = y, Métodos Numéricos 3 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La ecuación (1) y las condiciones iniciales (2) es conocido como un “problema de valores iniciales”, puede transformarse en un sistema de n ecuaciones diferenciales de primer orden. Usando la notación y1 = y, y2 = y ′ , Métodos Numéricos 3 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La ecuación (1) y las condiciones iniciales (2) es conocido como un “problema de valores iniciales”, puede transformarse en un sistema de n ecuaciones diferenciales de primer orden. Usando la notación y1 = y, y2 = y ′ , y3 = y ′′ , Métodos Numéricos 3 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La ecuación (1) y las condiciones iniciales (2) es conocido como un “problema de valores iniciales”, puede transformarse en un sistema de n ecuaciones diferenciales de primer orden. Usando la notación y1 = y, y2 = y ′ , y3 = y ′′ , ... , Métodos Numéricos 3 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La ecuación (1) y las condiciones iniciales (2) es conocido como un “problema de valores iniciales”, puede transformarse en un sistema de n ecuaciones diferenciales de primer orden. Usando la notación y1 = y, y2 = y ′ , y3 = y ′′ , ... , yn = y (n−1) , las ODE’s son y1′ = y2 , y2′ = y3 , ... ′ , yn−1 = yn , Métodos Numéricos yn′ = f (x, y1 , y2 , . . . , yn ), 3 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La ecuación (1) y las condiciones iniciales (2) es conocido como un “problema de valores iniciales”, puede transformarse en un sistema de n ecuaciones diferenciales de primer orden. Usando la notación y1 = y, y2 = y ′ , y3 = y ′′ , ... , yn = y (n−1) , las ODE’s son y1′ = y2 , y2′ = y3 , ... ′ , yn−1 = yn , yn′ = f (x, y1 , y2 , . . . , yn ), mientras que las condiciones iniciales se transforman en y1 (a) = α1 , y2 (a) = α2 , ... Métodos Numéricos , yn (a) = αn . 3 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales En forma matricial, si Y = (y1 , y2 , . . . , yn−1 , yn ) y F = (y2 , y3 , . . . , yn , f (x, y1, . . . , yn−1 ), entonces Y ′ = F (x, Y ), Y (a) = α, (3) donde α = (α1 , . . . , αn ). Métodos Numéricos 4 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales En forma matricial, si Y = (y1 , y2 , . . . , yn−1 , yn ) y F = (y2 , y3 , . . . , yn , f (x, y1, . . . , yn−1 ), entonces Y ′ = F (x, Y ), Y (a) = α, (3) donde α = (α1 , . . . , αn ). Nota: Si yi se especifica en puntos extremos del dominio, entonces se dice que el problema es de valores de contorno, o de frontera. Métodos Numéricos 4 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La estrategia comúnmente utilizada consiste en subdividir el intervalo de integración (dominio de cálculo) I = [x0 , xN ], con xN < ∞ en N intervalos de largo h = (xN − x0 )/N . Métodos Numéricos 5 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La estrategia comúnmente utilizada consiste en subdividir el intervalo de integración (dominio de cálculo) I = [x0 , xN ], con xN < ∞ en N intervalos de largo h = (xN − x0 )/N . Al parámetro h se le llama paso de discretización. Métodos Numéricos 5 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La estrategia comúnmente utilizada consiste en subdividir el intervalo de integración (dominio de cálculo) I = [x0 , xN ], con xN < ∞ en N intervalos de largo h = (xN − x0 )/N . Al parámetro h se le llama paso de discretización. Entonces, en cada nodo xi (con 0 ≤ i ≤ N ), buscamos el valor de la incógnita ui que aproxima a Y en ese punto, es decir ui ≈ Y (xi ), ∀i = 0, . . . , n. Métodos Numéricos 5 / 26 Ecuaciones diferenciales ordinarias Problema de valores iniciales La estrategia comúnmente utilizada consiste en subdividir el intervalo de integración (dominio de cálculo) I = [x0 , xN ], con xN < ∞ en N intervalos de largo h = (xN − x0 )/N . Al parámetro h se le llama paso de discretización. Entonces, en cada nodo xi (con 0 ≤ i ≤ N ), buscamos el valor de la incógnita ui que aproxima a Y en ese punto, es decir ui ≈ Y (xi ), ∀i = 0, . . . , n. al conjunto {u0 , u1 , . . . , uN } se le llama solución numérica. Métodos Numéricos 5 / 26 Ecuaciones diferenciales ordinarias Método de Euler Un método clásico, el método de Euler hacia adelante (forward), genera soluciones numéricas a partr de reemplazar la derivada exacta en (3) por la diferencia finita hacia adelante: fn ≈ F (xn , Y (xn )) = Y ′ (xn ) ≈ 1 1 (Y (xn+1 ) − Y (xn )) = (un+1 − un ) h h Métodos Numéricos 6 / 26 Ecuaciones diferenciales ordinarias Método de Euler Un método clásico, el método de Euler hacia adelante (forward), genera soluciones numéricas a partr de reemplazar la derivada exacta en (3) por la diferencia finita hacia adelante: fn ≈ F (xn , Y (xn )) = Y ′ (xn ) ≈ 1 1 (Y (xn+1 ) − Y (xn )) = (un+1 − un ) h h lo que nos lleva a Euler hacia adelante (explícito) un+1 = un + hfn , n = 0, 1, . . . , N − 1. Métodos Numéricos 6 / 26 Ecuaciones diferenciales ordinarias Método de Euler De manera similar se puede obtener Euler hacia atrás (implícito) un+1 = un + hfn+1 , n = 0, 1, . . . , N − 1, donde se ha considerado la aproximación Y ′ (xn ) ≈ Métodos Numéricos 1 h (un − un−1 ) 7 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Consideremos el sistema { ẍ + ω 2 x = F0 sin(ωt), x(0) = 0, ẋ(0) = 1. Métodos Numéricos 8 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Consideremos el sistema { ẍ + ω 2 x = F0 sin(ωt), x(0) = 0, ẋ(0) = 1. Este sistema puede escribirse como x1 = x, x2 = ẋ, esto implica que si X = (x1 , x2 ), entonces ( ) [ ]( ) ( ) ẋ1 0 1 x1 0 = + ẋ2 −ω 2 0 x2 F0 sin(ωt) | {z } | {z } A B Métodos Numéricos 8 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Consideremos el sistema { ẍ + ω 2 x = F0 sin(ωt), x(0) = 0, ẋ(0) = 1. Este sistema puede escribirse como x1 = x, x2 = ẋ, esto implica que si X = (x1 , x2 ), entonces ( ) [ ]( ) ( ) ẋ1 0 1 x1 0 = + ẋ2 −ω 2 0 x2 F0 sin(ωt) | {z } | {z } A B y las condiciones iniciales ( x1 x2 ) ( (0) = Métodos Numéricos 0 1 ) 8 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Esto nos lleva al sistema Ẋ = AX + B X(0) = X0 Métodos Numéricos 9 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Esto nos lleva al sistema Ẋ = AX + B X(0) = X0 Si un ≈ X(tn ), entonces la formulación de Euler hacia adelante queda así: Xn+1 = Xn + h [AXn + B] Métodos Numéricos 9 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Esto nos lleva al sistema Ẋ = AX + B X(0) = X0 Si un ≈ X(tn ), entonces la formulación de Euler hacia adelante queda así: Xn+1 = Xn + h [AXn + B] o equivalentemente ( x1 x2 ) ( = n+1 x1 x2 ) [( +h n 0 1 2 −ω 0 )( Métodos Numéricos x1 x2 ) ( + n 0 F0 sin(ωtn ) )] 9 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Por otro lado, haciendo Euler hacia atrás: Xn+1 = Xn + h [AXn+1 + B] , Métodos Numéricos 10 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Por otro lado, haciendo Euler hacia atrás: Xn+1 = Xn + h [AXn+1 + B] , entonces, (I − hA) Xn+1 = Xn + B Métodos Numéricos 10 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Por otro lado, haciendo Euler hacia atrás: Xn+1 = Xn + h [AXn+1 + B] , entonces, (I − hA) Xn+1 = Xn + B ⇒ Xn+1 = (I − hA)−1 [Xn + B] . Métodos Numéricos 10 / 26 Ecuaciones diferenciales ordinarias Método de Euler: Ejemplo Por otro lado, haciendo Euler hacia atrás: Xn+1 = Xn + h [AXn+1 + B] , entonces, (I − hA) Xn+1 = Xn + B ⇒ Xn+1 = (I − hA)−1 [Xn + B] . Nota: Se puede demostrar que los dos métodos de Euler son de orden 1 c/r a h. Métodos Numéricos 10 / 26 Ecuaciones diferenciales ordinarias Métodos de Crank-Nicolson y θ-esquema Combinando los métodos de Euler hacia adelante y atrás, encontramos al método de ... Crank-Nicolson un+1 = un + h (fn + fn+1 ) , 2 Métodos Numéricos n = 0, 1, . . . , N − 1. 11 / 26 Ecuaciones diferenciales ordinarias Métodos de Crank-Nicolson y θ-esquema Combinando los métodos de Euler hacia adelante y atrás, encontramos al método de ... Crank-Nicolson un+1 = un + h (fn + fn+1 ) , 2 n = 0, 1, . . . , N − 1. y también θ-esquema un+1 = un + h (θfn + (1 − θ)fn+1 ) , n = 0, 1, . . . , N − 1 con 0 ≤ θ ≤ 1. Métodos Numéricos 11 / 26 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 Ecuaciones diferenciales ordinarias Métodos de Crank-Nicolson y θ-esquema % ejemplo con crank-nicolson y oscilador armonico forzado t = linspace(0,500,50000); h = t(2)-t(1); w = 2*pi/1.25; % condiciones iniciales X0 = [0;1]; % amplitud de la fuerza F0 = 1; % matrices A = [0,1;-w^2,0]; I = eye(size(A)); Métodos Numéricos 12 / 26 Ecuaciones diferenciales ordinarias Métodos de Crank-Nicolson y θ-esquema 1 sol = X0; 2 3 % % solucion numerica en cada paso de tiempo 4 for i=1:length(t)-1, 5 B = [0;F0*sin(0.5*w*t(i))]; 6 X1 = (I - h/2*A)\((I + h*A/2)*X0 + h*B); 7 8 % guardamos la solucion (para graficarla despues ) 9 sol = [sol,X1]; 0 1 % actualizacion 2 X0 = X1; 3 end Métodos Numéricos 13 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica Pensemos en métodos que puedan aproximar a la solución exacta durante un período largo (xN >> x0 ) sin que el error sea importante1 . 1 Este es un tema sensible en métodos numéricos. Nosotros no discutiremos más allá de este ejemplo. Para el lector curioso: http://homepage.divms.uiowa.edu/~atkinson/papers/NAODE_Book.pdf Métodos Numéricos 14 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica Pensemos en métodos que puedan aproximar a la solución exacta durante un período largo (xN >> x0 ) sin que el error sea importante1 . Para entender este concepto, consideraremos el siguiente problema modelo: } y ′ (t) = λy(t), t ∈ (0, ∞), λ < 0 (4) y(0) = 1. cuya solución exacta es y(t) = eλt −→ 0 cuando t → +∞. 1 Este es un tema sensible en métodos numéricos. Nosotros no discutiremos más allá de este ejemplo. Para el lector curioso: http://homepage.divms.uiowa.edu/~atkinson/papers/NAODE_Book.pdf Métodos Numéricos 14 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica Aplicando Euler hacia atrás al sistema (4) encontramos que u0 = 1, Métodos Numéricos 15 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica Aplicando Euler hacia atrás al sistema (4) encontramos que u0 = 1, un+1 = un (1+λh) = u0 (1+λh)n+1 ⇒ un+1 = (1+λh)n+1 , n ≥ 0. Métodos Numéricos 15 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica Aplicando Euler hacia atrás al sistema (4) encontramos que u0 = 1, un+1 = un (1+λh) = u0 (1+λh)n+1 ⇒ un+1 = (1+λh)n+1 , n ≥ 0. Entonces se tendrá que lı́mn→∞ un = 0 ssi −1 < 1 + hλ < 1, es decir h< 2 . |λ| Métodos Numéricos (5) 15 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica Aplicando Euler hacia atrás al sistema (4) encontramos que u0 = 1, un+1 = un (1+λh) = u0 (1+λh)n+1 ⇒ un+1 = (1+λh)n+1 , n ≥ 0. Entonces se tendrá que lı́mn→∞ un = 0 ssi −1 < 1 + hλ < 1, es decir h< 2 . |λ| (5) Esta condición expresa el requerimiento de que, para h fijo, la solución numérica sea capaz de reproducir el comportamiento de la solución exacta cuando t → ∞. Si h < 2/|λ| se tendrá que lı́mn→∞ |un | = ∞. Métodos Numéricos 15 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica * De este modo, la ecuación (5) representa una condición de estabilidad. Métodos Numéricos 16 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica * De este modo, la ecuación (5) representa una condición de estabilidad. * La propiedad lı́mn→∞ un = 0 se conoce como estabilidad absoluta. Métodos Numéricos 16 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica * De este modo, la ecuación (5) representa una condición de estabilidad. * La propiedad lı́mn→∞ un = 0 se conoce como estabilidad absoluta. En contraste con el método de Euler hacia adelante, ni Euler hacia atrás ni Crack-Nicolson tienen limitaciones al valor de h para tener estabilidad absoluta. De hecho, con Euler hacia atrás se tendrá ( )n+1 1 un+1 = →0 ∀h > 0 1 − λh y para Crank-Nicolson [ un+1 1 + hλ/2 = 1 − hλ/2 ]n+1 →0 Métodos Numéricos ∀h > 0. 16 / 26 Ecuaciones diferenciales ordinarias Estabilidad numérica * De este modo, la ecuación (5) representa una condición de estabilidad. * La propiedad lı́mn→∞ un = 0 se conoce como estabilidad absoluta. En contraste con el método de Euler hacia adelante, ni Euler hacia atrás ni Crack-Nicolson tienen limitaciones al valor de h para tener estabilidad absoluta. De hecho, con Euler hacia atrás se tendrá ( )n+1 1 un+1 = →0 ∀h > 0 1 − λh y para Crank-Nicolson [ un+1 1 + hλ/2 = 1 − hλ/2 ]n+1 →0 ∀h > 0. Podemos concluir que el método de Euler hacia adelante es condicionalmente estable, mientras que los demás métodos son incondicionalmente estables. Métodos Numéricos 16 / 26 Ecuaciones diferenciales ordinarias Métodos de Runge-Kutta Los métodos de R-K están orientados a eliminar la necesidad de diferenciación repetida de las ecs. diferenciales. Métodos Numéricos 17 / 26 Ecuaciones diferenciales ordinarias Métodos de Runge-Kutta Los métodos de R-K están orientados a eliminar la necesidad de diferenciación repetida de las ecs. diferenciales. Del problema y ′ (x) = f (x, y) y de la expansión en serie de Taylor a primer orden se tendrá y(x + h) ≈ y(x) + y ′ (x)h = y(x) + f (x, y)h. Métodos Numéricos 17 / 26 Ecuaciones diferenciales ordinarias Métodos de Runge-Kutta Los métodos de R-K están orientados a eliminar la necesidad de diferenciación repetida de las ecs. diferenciales. Del problema y ′ (x) = f (x, y) y de la expansión en serie de Taylor a primer orden se tendrá y(x + h) ≈ y(x) + y ′ (x)h = y(x) + f (x, y)h. Si un ≈ y(xn ) Métodos Numéricos 17 / 26 Ecuaciones diferenciales ordinarias Métodos de Runge-Kutta Los métodos de R-K están orientados a eliminar la necesidad de diferenciación repetida de las ecs. diferenciales. Del problema y ′ (x) = f (x, y) y de la expansión en serie de Taylor a primer orden se tendrá y(x + h) ≈ y(x) + y ′ (x)h = y(x) + f (x, y)h. Si un ≈ y(xn ) ⇒ un+1 ≈ y(xn+1 ) = y(xn + h), Métodos Numéricos 17 / 26 Ecuaciones diferenciales ordinarias Métodos de Runge-Kutta Los métodos de R-K están orientados a eliminar la necesidad de diferenciación repetida de las ecs. diferenciales. Del problema y ′ (x) = f (x, y) y de la expansión en serie de Taylor a primer orden se tendrá y(x + h) ≈ y(x) + y ′ (x)h = y(x) + f (x, y)h. Si un ≈ y(xn ) ⇒ un+1 ≈ y(xn+1 ) = y(xn + h), es decir, un+1 = un + hfn (con fn ≈ f (xn , y(xn )). Métodos Numéricos 17 / 26 Ecuaciones diferenciales ordinarias Métodos de Runge-Kutta Los métodos de R-K están orientados a eliminar la necesidad de diferenciación repetida de las ecs. diferenciales. Del problema y ′ (x) = f (x, y) y de la expansión en serie de Taylor a primer orden se tendrá y(x + h) ≈ y(x) + y ′ (x)h = y(x) + f (x, y)h. Si un ≈ y(xn ) ⇒ un+1 ≈ y(xn+1 ) = y(xn + h), es decir, un+1 = un + hfn (con fn ≈ f (xn , y(xn )). Esta misma idea se puede escribir como ∫ y(x + h) − y(h) = x+h y ′ dx = x Métodos Numéricos ∫ x+h f (x, y) dx (6) x 17 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta de orden 2 Para conseguir un método de orden superior, consideremos una fórmula de integración de la forma ∫ x+h f (x, y) dx ≈ c0 f (x, y)h + c1 f (x + ph, y + qhf (x, y))h (7) x Métodos Numéricos 18 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta de orden 2 Para conseguir un método de orden superior, consideremos una fórmula de integración de la forma ∫ x+h f (x, y) dx ≈ c0 f (x, y)h + c1 f (x + ph, y + qhf (x, y))h (7) x donde buscaremos los parámetros c0 , c1 , p y q para que ajusten (6) a 1 1 y(x + h) ≈ y(x) + y ′ (x)h + y ′′ (x)h2 = y(x) + f (x, y)h + f ′ (x, y)h2 (8) 2 2 Métodos Numéricos 18 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta de orden 2 Para conseguir un método de orden superior, consideremos una fórmula de integración de la forma ∫ x+h f (x, y) dx ≈ c0 f (x, y)h + c1 f (x + ph, y + qhf (x, y))h (7) x donde buscaremos los parámetros c0 , c1 , p y q para que ajusten (6) a 1 1 y(x + h) ≈ y(x) + y ′ (x)h + y ′′ (x)h2 = y(x) + f (x, y)h + f ′ (x, y)h2 (8) 2 2 ∂f ∑ ∂f + fi (x, y) se tendrá ∂x ∂yi n Notando que f ′ (x, y) = i=1 ∑ ∂f ∂f ph + qh fi (x, y) + O(h2 ) ∂x ∂yi n f (x + ph, y + qhf (x, y)) = f (x, y) + i=1 Métodos Numéricos 18 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta de orden 2 y comparando con la unión de las ecuaciones (6) y (8) [ ] n ∑ ∂f ∂f y(x+h) = y(x)+(c0 +c1 )f (x, y)h+c1 ph + qh fi (x, y) h+O(h3 ) ∂x ∂yi i=1 Métodos Numéricos 19 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta de orden 2 y comparando con la unión de las ecuaciones (6) y (8) [ ] n ∑ ∂f ∂f y(x+h) = y(x)+(c0 +c1 )f (x, y)h+c1 ph + qh fi (x, y) h+O(h3 ) ∂x ∂yi i=1 obtendremos finalmente las condiciones c0 + c1 = 1, 1 c1 p = , 2 Métodos Numéricos 1 c1 q = . 2 19 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta de orden 2 y comparando con la unión de las ecuaciones (6) y (8) [ ] n ∑ ∂f ∂f y(x+h) = y(x)+(c0 +c1 )f (x, y)h+c1 ph + qh fi (x, y) h+O(h3 ) ∂x ∂yi i=1 obtendremos finalmente las condiciones 1 c1 p = , 2 c0 + c1 = 1, 1 c1 q = . 2 Algunas elecciones de parámetros comúnmente usadas son c0 0 1/2 1/3 c1 1 1/2 2/3 p 1/2 1 3/4 q 1/2 1 3/4 Método Euler modificado Heun Ralston Métodos Numéricos 19 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta de orden 2 Si escogemos, por ejemplo, al métdo de Euler modificado, obtenemos la fórmula y(x + h) = y(x) + f (x + h/2, y + h/2 f (x, y))h Métodos Numéricos 20 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta de orden 2 Si escogemos, por ejemplo, al métdo de Euler modificado, obtenemos la fórmula y(x + h) = y(x) + f (x + h/2, y + h/2 f (x, y))h Entonces, en el intervalo [xn , xn+1 ], este método de RK2 es Runge-Kutta de orden 2 (Euler modificado) K1 = h fn K2 = h f (xn + h/2, y + K1 /2) un+1 = un + K2 . Métodos Numérico 20 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta de orden 4 Repitiendo el mismo proceso hasta cuarto orden, se obtiene el método Runge-Kutta de orden 4 K1 = h fn K2 = h f (xn + h/2, y + K1 /2) K3 = h f (xn + h/2, y + K2 /2) K4 = h f (xn + h, y + K3 ) 1 un+1 = un + (K1 + 2K2 + 2K3 + K4 ). 6 Métodos Numéricos 21 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta 2: Ejemplo Consideremos el problema y ′ (x) = sin(y), x ∈ (0, 0.5) y(0) = 1, y h = 0.1 Métodos Numéricos 22 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta 2: Ejemplo Consideremos el problema y ′ (x) = sin(y), x ∈ (0, 0.5) y(0) = 1, y h = 0.1 En este ejemplo tenemos que f (x, y) = sin(y), entonces las fórmulas de RK2 son, para el primer paso de tiempo: K1 = h f (x, y) = h fn = 0.1 · sin(un ) K2 = h f (x + h/2, y + K1 /2) = 0.1 sin(un + K1 /2). Métodos Numéricos 22 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta 2: Ejemplo Consideremos el problema y ′ (x) = sin(y), x ∈ (0, 0.5) y(0) = 1, y h = 0.1 En este ejemplo tenemos que f (x, y) = sin(y), entonces las fórmulas de RK2 son, para el primer paso de tiempo: K1 = h f (x, y) = h fn = 0.1 · sin(un ) K2 = h f (x + h/2, y + K1 /2) = 0.1 sin(un + K1 /2). Esto es, un+1 = un + 0.1 sin(un + 0.05 sin(un )). Métodos Numéricos 22 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta 2: Ejemplo Partiendo de u0 = y(0) = 1, procedemos con la integración: Para x1 = x0 + h = 0.1: K1 = 0.1 · sin(1) = 0.0841 K2 = 0.1 sin(1 + 0.0841/2) = 0.0863 u1 = y(0.1) = 1 + 0.0863 = 1.0863. Métodos Numéricos 23 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta 2: Ejemplo Partiendo de u0 = y(0) = 1, procedemos con la integración: Para x1 = x0 + h = 0.1: K1 = 0.1 · sin(1) = 0.0841 K2 = 0.1 sin(1 + 0.0841/2) = 0.0863 u1 = y(0.1) = 1 + 0.0863 = 1.0863. Para x2 = x1 + h = 0.2: K1 = 0.1 · sin(1.0863) = 0.00885 K2 = 0.1 sin(1.0863 + 0.0885/2) = 0.0905 u2 = y(0.2) = 1.0863 + 0.0905 = 1.1768. Métodos Numéricos 23 / 26 Ecuaciones diferenciales ordinarias Runge-Kutta 2: Ejemplo Partiendo de u0 = y(0) = 1, procedemos con la integración: Para x1 = x0 + h = 0.1: K1 = 0.1 · sin(1) = 0.0841 K2 = 0.1 sin(1 + 0.0841/2) = 0.0863 u1 = y(0.1) = 1 + 0.0863 = 1.0863. Para x2 = x1 + h = 0.2: K1 = 0.1 · sin(1.0863) = 0.00885 K2 = 0.1 sin(1.0863 + 0.0885/2) = 0.0905 u2 = y(0.2) = 1.0863 + 0.0905 = 1.1768. etc ... Métodos Numéricos 23 / 26 EDO en Matlab Existen varias funciones basadas en RK para resolver problemas de ecuaciones diferenciales ordinarias (EDO, o ODE en inglés), y tienen la siguiente sintaxis Funciones odeXX [T,Y] = solver(odefun,tspan,y0) [T,Y] = solver(odefun,tspan,y0,options) sol = solver(odefun,[t0 tf],y0,...) Donde odefun puede ser ode45 (la más usada), ode23, ode113, ode15s, ode23s, ode23t, ode23tb. Métodos Numéricos 24 / 26 EDO en Matlab Ejemplo 1: Resolver −t y y′ = √ , 2 − y2 y(0) = 1, t ∈ (0, 5) 1 function f=fun1(t,y) 2 f = -t*y/sqrt(2-y^2); y luego se ejecuta » [t,f] = ode45(’fun1’,[0,5],1); Métodos Numéricos 25 / 26 1 2 3 4 EDO en Matlab Ejemplo 2: Resolver para t ∈ (0, π/2) y1′ = 2y1 + y2 + 5y3 + e−2t y2′ = −3y1 − 2y2 − 8y3 + 2e−2t − cos(3t) y3′ = 3y1 + 3y2 + 2y3 + cos(3t) (y1 , y2 , y3 )(0) = (1, −1, 0) function Fv=fun2(t,Y); Fv(1,1)=2*Y(1)+Y(2)+5*Y(3)+exp(-2*t); Fv(2,1)=-3*Y(1)-2*Y(2)-8*Y(3)+2*exp(-2*t)-cos(3*t); Fv(3,1)=3*Y(1)+3*Y(2)+2*Y(3)+cos(3*t); y luego se ejecuta >> [t,f] = ode23(’fun2’,[0,pi/2],[1;-1;0]); >> plot(tv,Yv(:,1),’+’,tv,Yv(:,2),’x’,tv,Yv(:,3),’o’) >> hold; grid on; title(’Ejemplo 2’); >> legend(’y_1’,’y_2’,’y_3’); xlabel(’tiempo’); hold off; Métodos Numéricos 26 / 26