integración de - josé luis de la fuente o'connor · h i j d e f g a b c 10 8 7 9 465 12 3...

57
1/57 Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros Industriales Grado en Ingeniería en Tecnologías Industriales-3º Matemáticas de Especialidad–Ingeniería Eléctrica Integración de Ecuaciones Diferenciales Ordinarias José Luis de la Fuente O’Connor [email protected] [email protected] Clase_integracion_ODE.pdf

Upload: others

Post on 10-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

1/57Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros IndustrialesGrado en Ingeniería en Tecnologías Industriales-3º

Matemáticas de Especialidad–Ingeniería Eléctrica

Integración deEcuaciones Diferenciales Ordinarias

José Luis de la Fuente O’[email protected]@upm.es

Clase_integracion_ODE.pdf

Page 2: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

2/57

Índice

� Introducción

� Integración numérica de ecuaciones diferenciales ordinarias(ODEs)

�Método de Euler�Mejoras en el método de Euler�Método de Taylor�Métodos de Runge-Kutta�Métodos implícitos y problemas stiff

Page 3: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

3/57

Introducción

� Una ecuación diferencial en su forma más simple se define de forma explícita así:

dy

dtD y 0 D f .t; y/; siendo y.0/ D y0:

Su solucióny.x/ D y0 C

Z x

0

f .t; y/ dt:

� El orden de una ecuación diferencial es el de su máxima derivada.

� Las ecuaciones diferenciales relacionan las variables de un problema a escaladiferencial, en la cual son independientes de las condiciones de contorno(geometría, condiciones iniciales; : : :)

Page 4: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

4/57

� Son el resultado de modelizar una amplia familia de problemas de ingeniería enlos que se estudia cómo y por qué varia en el tiempo el comportamiento desistemas físicos, económicos, sociales, etc.

� Ejemplo La ecuación logística, o función logística,

y 0 D cy.1 � y/

modeliza el crecimiento del tamaño de una población, que es proporcional altamaño actual, y, y a la capacidad remanente de recursos disponibles.

� Esta ecuación diferencial tiene infinitas soluciones. Si se le especifica unacondición de partida, inmediatamente se identifica de qué solución se trata.

� Para poder integrar una ecuación diferencial es necesario definir las condicionesde contorno.

Page 5: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

5/57

� Un problema de valor inicial es el que define la ecuación diferencial y unacondición, o valor inicial, en un intervalo a � t � b. En conjunto,8<

:y 0 D f .t; y/

y.a/ D yat 2 Œa; b�:

� Resulta útil pensar en la evolución de una ecuación diferencial en el tiempocomo la de un cuerpo dentro de un campo de fuerzas o de pendientes (como elde la figura, referida a la ecuación logística).

y

y´ = 5*y*(1-y)

-0,4

-0,2

0

0,2

0,4

0,6

0,8

1

1,2

t

0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6 1,8 2 2,2

y

y´ = 5*y*(1-y)

-0,4

-0,2

0

0,2

0,4

0,6

0,8

1

1,2

t

0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6 1,8 2 2,2

En el lado derecho sehan dibujado, en el mis-mo campo de fuerzas, lasdos soluciones que corres-ponden a y.0/ D 0;2 yy.0/ D 1;26.

Page 6: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

6/57

� Tipos de ecuaciones diferenciales:

Ecuaciones diferenciales ordinarias —EDO— De primer orden: unavariable dependiente y una variable independiente. Problemas de valor inicialy problemas de contorno.

Sistemas de ecuaciones diferenciales N variables dependientesrelacionadas por N ecuaciones diferenciales.

Ecuaciones en derivadas parciales Una variable dependiente y variasvariables independientes. Problemas elípticos, parabólicos e hiperbólicos.

Page 7: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

7/57Integración numérica de EDO u ODE

� Analíticamente sólo se pueden integrar algunas ecuaciones diferenciales.

� La integración numérica no obtiene una función analítica y.t/ que satisface laecuación diferencial anterior, sino un conjunto de valores discretos yk que secorresponden con otros tantos, tk, de la variable independiente t .

� Si se desean resultados para otros valores de t se pueden utilizar los métodos deinterpolación vistos previamente.

� Conocida la función yi en el instante ti los integradores numéricos calculan elvalor yiC1 en tiC1 D ti C h mediante una expresión del tipo

yiC1 D yi C h�;

donde � es un término que incorpora información de la derivada y 0.

Page 8: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

8/57

� Los métodos de integración numérica que veremos se clasifican en:

De paso simple y paso múltiple Los de paso simple calculan la soluciónyiC1 en el instante tiC1 a partir del valor de la función yi en el instante ti .Por ejemplo, en el método de Euler

yiC1 D yi C f .ti ; yi/h:

� Los de paso múltiple calculan la solución en tiC1 a partir del valor de lafunción en ti , ti�1; : : : ; ti�nC1. Por ejemplo, en el método de Heun

yiC1 D yi Ch

2

�f .ti ; yi/C f

�tiC1; yi C hf .ti ; yi/

��:

Page 9: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

9/57

Métodos explícitos e implícitos Los métodos explícitos permiten hallaryiC1 directamente sin tener que resolver un sistema de ecuaciones nolineales.Por ejemplo, Runge-Kutta de orden dos

yiC1 D yi C .a1k1 C a2k2/ h;

dondek1 D f .ti ; yi/

k2 D f .ti C p1h; yi C q11k1h/:

� Los métodos implícitos necesitan resolver un sistema de ecuaciones nolineales pues yiC1 aparece a ambos lados de la ecuación.Por ejemplo, la regla trapezoidal

yiC1 D yi C1

2

�f .ti ; yi/C f .tiC1; yiC1/

�h:

Page 10: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

10/57

Método de Euler

� Formulado por Leonhard Euler, Basilea 1707–San Petersburgo 1783.

� Sigue la idea intuitiva de la geometría de los gráficos de los campos de fuerzas opendientes.¿Por qué no “resolver” una ecuación diferencial “siguiendo” las flechas, partiendode un punto inicial?

� Desde el punto de arranque hay que moverse una pequeña distancia, siguiendouna pendiente, llegándose a un nuevo punto .t1; y1/ en el que se revalúa lapendiente, luego hay que moverse con esa nueva pendiente otro poco, etc.

� La aproximación será buena si la pendiente no cambia mucho súbitamente.

Page 11: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

11/57� Poe ejemplo se trata de resolver8<:y 0 D ty C t3

y.0/ D y0

t 2 Œ0; 1�;

que discurre en el campo de “fuerzas” de la figura, partiendo de y.0/ D 1.

y

y´ = t*y+t³

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1,6

1,8

2

t

0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1

Page 12: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

12/57

� La relación general de recurrencia del método de Euler la define

yiC1 D yi C f .ti ; yi/h

en la que f .ti ; yi/ es la pendiente en cada punto –su derivada– y h el paso quese da con esa inclinación.

� Si usamos Euler en el ejemplo, con h D 0;1, resulta la línea en rojo.

y

y´ = t*y+t³

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1,6

1,8

2

t0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1

Page 13: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

13/57

� La interpretación geométrica de lo que sucede es esta:

ETSII-UPM

Método de Euler Es el método de integración numérica más sencillo. Se utiliza la derivada en el punto (ti, yi) para avanzar un paso:

Es muy fácil de aplicar aunque no muy preciso, pues la derivada en (ti, yi) no es suficientemente representativa del paso h.

Interpretación geométrica:

ti ti+1

hyi

yi+1= yi+f(ti ,yi)h

valor exacto

valor aproximadoerror

� Se producen errores de truncamiento en cada punto, por retener sólo dostérminos en el desarrollo de Taylor, y en el total, así como de redondeo en loscálculos del proceso. El global es O.h/.

Page 14: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

14/57

� Si ensayamos todo esto en un script de Matlab, puede resultar este:

% Script del método de Euler con Matlab, Euler_2_S.m% y’(t)=t*y+t^3; solución analítica exacta y(t)=3*exp^(t^2/2)-t^2-2

h = 0.1; h1 = 0.01 % Pasos de integración h=0,1 y h=0,01t = 0:h:1; t1 = 0:h1:1;yx(1)=1.0; yx1(1)=1.0 % Punto de partida

for i=1:length(t)-1 % Bucle del proceso de integraciónk1 = t(i)*yx(i)+t(i)^3;yx(i+1) = yx(i)+h*k1; % Nuevo punto: valor de y

endfor i=1:length(t1)-1 % Bucle del proceso de integración

k11 = t1(i)*yx1(i)+t1(i)^3;yx1(i+1) = yx1(i)+h1*k11; % Nuevo punto: valor de y

end

y=3*exp(t.^2/2)-t.^2-2; % Solución exacta

% Gráficos

plot(t,yx,’b--’,t,y,’r-’,t1,yx1,’k--’);legend(’Aproximación h=0,1’,’Exacto y’,’aproximación h=0,01’);title(’Paso de Euler, h=0,1 y h=0,01’);xlabel(’t’);ylabel(’y*(t), y(t)’); axis([0 1 0.95 2]);

% Tabla

for i=1:length(t)disp(sprintf(’t=%5.3f, y(t)=%6.4f, y*(t)=%6.4f’,t(i),y(i),yx(i)));

end

Page 15: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

15/57

� Con pasos h D 0;1 y h D 0;01 se obtiene lo que sigue.

>> Euler_2_St=0.000, y(t)=1.0000, y*(t)=1.0000t=0.100, y(t)=1.0050, y*(t)=1.0000t=0.200, y(t)=1.0206, y*(t)=1.0101t=0.300, y(t)=1.0481, y*(t)=1.0311t=0.400, y(t)=1.0899, y*(t)=1.0647t=0.500, y(t)=1.1494, y*(t)=1.1137t=0.600, y(t)=1.2317, y*(t)=1.1819t=0.700, y(t)=1.3429, y*(t)=1.2744t=0.800, y(t)=1.4914, y*(t)=1.3979t=0.900, y(t)=1.6879, y*(t)=1.5610t=1.000, y(t)=1.9462, y*(t)=1.7744

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

1

1.1

1.2

1.3

1.4

1.5

1.6

1.7

1.8

1.9

2

t

y*(t

), y

(t)

Paso de Euler, h=0,1 y h=0,01

Aproximación h=0,1Exacto yaproximación h=0,01

� Con el paso de integración h D 0;1 los errores son apreciables.

Page 16: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

16/57Mejoras del método de EulerMétodo de Heun

� Formulado por Karl Heun, Alemania, 1859-1929.

� Su idea es utilizar en .ti ; yi/ un valor promedio de la derivada en ese punto y en.tiC1; yiC1/.

� Como no se conoce el valor yiC1, se calcula con el método de Euler,y�iC1 D yi C hf .ti ; yi/.

� El nuevo valor de yiC1 será

yiC1 D yi Ch

2

�f .ti ; yi/C f .tiC1; y

iC1/�:

Page 17: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

17/57

� El método se conoce como predictor-corrector. El error es O.h3/.

� Una variante, denominada método del trapezoide, consiste en hacer iterar elyiC1, en cada nuevo paso, de acuerdo con la fórmula

yjiC1 D yi C

h2

�f .ti ; yi/C f

�tiC1; y

j�1iC1

��hasta que se cumpla una tolerancia de

ˇyjiC1 � y

j�1iC1

ˇ.

Page 18: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

18/57� Ejemplo Integremos la ecuación y 0 D 4e0;8t � 0;5y en el intervalo t D Œ0; 4�de tal forma que en t D 0, y D 2. El paso ha de ser h D 1. Lo haremos con elmétodo de Euler y con el de Heun, sin y con iteración (trapezoide). En Matlab:

function [t,yx,y,y_h,y_hi] = Heun_4(dydt,tspan,y0,h,es,maxit)% Método de Heun para integrar una ODE% dydt: función que evalúa la ODE; tspan: intervalos de cálculo% y0: punto de partida; h: paso; es: tolerancia de iteración corrector% maxit: máximo de iteraciones; yx: valor exacto; y: valor con Euler% y_h: valor con Heun sin itera.; y_hi: con iteraciónif nargin<6, maxit = 50; end; if nargin<5, es = 0.0001; endti = tspan(1); tf = tspan(2); t = (ti:h:tf)’; n = length(t);if t(n)<tf, t(n+1)=tf; n=n+1; end % Por si acaso, un intervalo más en ty = y0*ones(n,1); y_h = y; y_hi = y; % Inicializar valoresyx = 4/1.3*(exp(0.8*t)-exp(-0.5*t))+2*exp(-0.5*t); % Valor exactofor i = 1:n-1

hh = t(i+1) - t(i); iter = 0;k1 = dydt(t(i),y(i)); k2 = dydt(t(i),y_h(i)); k3 = dydt(t(i),y_hi(i)); % Derivadasy(i+1) = y(i) + k1*hh; % Eulery_h(i+1) = y_h(i) + hh/2*(k2+dydt(t(i+1),y_h(i)+hh*k2)); % Heun sin iteracióny_hi(i+1) = y_hi(i)+ k3*hh;while 1

yold= y_hi(i+1); k2 = dydt(t(i+1),y_hi(i+1));y_hi(i+1) = y_hi(i) + (k3+k2)*hh/2; % Heun con iteracióniter = iter + 1;if y_hi(i+1)~=0, ea = abs((y_hi(i+1)-yold)/y_hi(i+1))*100; endif ea<=es || iter>=maxit, break, end

ende ndplot(t,yx,’b--’,t,y,’r-’,t,y_h,’k--’,t,y_hi,’:’); xlabel(’t’); ylabel(’y’);title(’Solución de y’’=4e^{(0.8t)}-0.5y’); grid onlegend(’Exacto’,’Euler’,’Heun’,’Heun con it.’,’Location’,’NorthWest’);

end

function dp = dpdt_Heun_c(t, p)dp = 4*exp(0.8*t)-0.5*p;

Page 19: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

19/57

� El resultado es este.

>> [t,yx,y,y_h,y_hi]=Heun_4(@dpdt_Heun_c,[0 4],2,1);>> [t,yx,y,y_h,y_hi]ans =

0 2.0000 2.0000 2.0000 2.00001.0000 6.1946 5.0000 6.7011 6.36092.0000 14.8439 11.4022 16.3198 15.30223.0000 33.6772 25.5132 37.1992 34.74334.0000 75.3390 56.8493 83.3378 77.7351

0 0.5 1 1.5 2 2.5 3 3.5 40

10

20

30

40

50

60

70

80

90

t

y

Solución de y'=4e(0.8t)-0.5y

ExactoEulerHeunHeun con it.

Page 20: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

20/57

Método del punto medio

� En vez de utilizar el promedio de las derivadas en los puntos .ti ; yi/ y.tiC1; yiC1/, se utiliza una aproximación de la derivada en el punto medio:

yiC1=2 D yi Ch

2f .ti ; yi/; y 0

iC12D f

�ti C

h

2; yiC1=2

�;

por lo queyiC1 D yi C hf

�tiC1=2; yiC1=2

�:

� Este procedimiento se conoce también como Euler corregido. Está relacionadocon el método de integración de Newton-Cotes.

� El error que produce es O.h2/.

Page 21: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

21/57

Método de Taylor

� Basado en el desarrollo en serie Formulado en 1715 por Brook Taylor1, ReinoUnido, 1685-1731.

� Si se desarrolla en serie de Taylor y.t/ en el punto ti , suponiendo que y.t/ tienederivadas continuas hasta orden nC 1, se tiene que

y.tiC1/ D y.ti/C hy0.ti/C

h2

2Šy 00.ti/C

h3

3Šy 000.ti/C � � � C

hn

nŠy.n/.ti/CO.hnC1/:

� Si f es derivable,

y 0 D f .t; y/

y 00 D f 0 D ft C fy � y0 D ft C fy � f

y 000 D f 00 D ft t C 2fty � f C fyy � f2 C ft � fy C f

2y � f

:::1El original parece se debe al escocés James Gregory, 1638-1675.

Page 22: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

22/57

� Sustituyendo estas expresiones en el desarrollo en serie se obtiene el método deTaylor del orden de precisión que se desee.

� Su gran inconveniente es que las derivadas de orden superior a uno –en estecaso sería el método de Euler– pueden ser muy complicadas de calcular.

Page 23: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

23/57

Métodos de Runge-Kutta

� Son una familia de métodos desarrollados a partir del trabajo de los alemanesCarl David Tolmé Runge, 1856-1927, y Martin Wilhelm Kutta 1867-1944.

� Consiguen la precisión del método de Taylor sin necesidad de calcular derivadasde orden elevado.

� El avance se realiza mediante una expresión general

yiC1 D yi C h�; con � D a1k1 C a2k2 C � � � C ankn;

y donde los coeficientes ai son unos pesos de aproximaciones ki de las distintasderivadas por medio de la función f .t; y/ evaluada en distintos puntos.

Page 24: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

24/57

� Los valores de las ki se obtienen mediante las fórmulas

k1Df .ti ; yi/

k2Df�tiCp1h; yiCq11k1h

�k3Df

�tiCp2h; yiCq21k1hCq22k2h

�:::

knDf�tiCpnh; yiCqn�1;1k1hCqn�1;2k2hC� � � C qn�1;n�1kn�1h

�:

� Cada valor de ki depende de los ks ya calculados, por lo que la evaluación deestas fórmulas es sencilla si se conocen los coeficientes.

� Los ps y qs son coeficientes numéricos que se calculan imponiendo la condiciónde que el error sea del mismo orden que en el método de Taylor de orden similar.

Page 25: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

25/57Deducción de las fórmulas de Runge-Kutta de orden 2

� Son yiC1 D yiC�a1k1Ca2k2

�h, donde k1Df .ti ; yi/ � fi

k2Df .tiCp1h; yiCq11k1h/:

� El método de Taylor, reteniendo términos hasta orden dos, establece que

yiC1 D yi C hy0.ti/C

h2

2Šy 00.ti/ D yi C hfi C

h2

2

�ft i C fyi � fi

�:

� Desarrollando en serie las fórmulas de Runge-Kutta se tiene que

yiC1DyiC.a1k1Ca2k2/h D yiC�a1f .ti ; yi/Ca2f .tiCp1h; yiCq11k1h/

�h

DyiCa1fihC a2�fiCft ip1hCfyifiq11k1h

�h:

� Comparando las dos expresiones se llega a estas tres ecuaciones con cuatroincógnitas:

a1 C a2 D 1; a2p1 D1

2y a2q11 D

1

2:

Page 26: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

26/57� Dando valores a a2 se obtienen distintas fórmulas de Runge-Kutta de orden 2(con error local de truncamiento O.h3/).

1.- a2 D 12�! p1Dq11D1: Método de Heun

yiC1Dy1 Ch2

�k1 C k2

�k1 Df .ti ; yi/

k2 Df .ti C h; yi C k1h/:

2.- a2 D 1 �! p1Dq11D1=2: Método del Punto MedioyiC1Dy1 C k2h

k1 Df .ti ; yi/

k2 Df .ti C h=2; yi C k1h=2/:

3.- a2 D 2=3 �! p1Dq11D3=4: Método de RalstonAnthony Rals-ton, EE.UU.1930-.

yiC1Dy1 Ch2

�13k1 C

23k2�

k1 Df .ti ; yi/

k2 Df .ti C34h; yi C

34k1h/:

Page 27: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

27/57Fórmulas de Runge-Kutta de orden superior a 2

� Orden 3, con error O.h4/:

yiC1 D y1 Ch6

�k1 C 4k2 C k3

�k1 D f .ti ; yi/

k2 D f�ti C

12h; yi C

12hk1

�k3 D f .ti C h; yi � k1hC 2k2h/ :

� Orden 4, con error O.h5/:

yiC1 D y1 Ch6

�k1 C 2k2 C 2k3 C k4

�k1 D f .ti ; yi/

k2 D f�ti C

12h; yi C

12hk1

�k3 D f

�ti C

12h; yi C

12hk2

�k4 D f .ti C h; yi C k3h/ :

Page 28: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

28/57

� La interpretación geométrica de la fórmula de orden 4 es la esta.

ETSII-UPM

Otras fórmulas de Runge-Kutta (1/2) Método de Runge-Kutta de orden 3 (error local O(h4))

Método de Runge-Kutta de orden 4 (clásico, error local O(h5)) Es probablemente el método de integración de EDOs más utilizado.

1 1 2 3

1

2 1

3 1 2

46

( , )1 1 ( , )2 2

( , 2 )

i i

i i

i i

i i

hy y k k k

k f t y

k f t h y k h

k f t h y k h k h

1 1 2 3 4

1

2 1

3 2

4 3

2 26

( , )1 1 ( , )2 21 1 ( , )2 2

( , )

i i

i i

i i

i i

i i

hy y k k k k

k f t y

k f t h y k h

k f t h y k h

k f t h y k h

k1

k2

k3

k4

yi+1

yi

Interpretación geométrica

� Cada una de las ks representa una pendiente. El resultado es una mediaponderada de esas pendientes.

Page 29: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

29/57

� Orden 5, Butcher, con error O.h6/:

yiC1 D y1 Ch90.7k1 C 32k3 C 12k4 C 32k5 C 7k6/

k1 D f .ti ; yi/

k2 D f�ti C

14h; yi C

14hk1

�k3 D f

�ti C

14h; yi C

18hk1 C

18hk2

�k4 D f

�ti C

12h; yi �

12hk2 C hk3

�k5 D f

�ti C

34h; yi C

316hk1 C

916hk4

�k6 D f

�ti C h; yi �

37hk1 C

27hk2 C

127hk3 �

127hk4 C

87hk5

�:

� Para aumentar en una unidad el orden del Runge-Kutta clásico de orden cuatrohacen falta dos evaluaciones de función adicionales.

� En general no se suelen utilizar fórmulas de Runge-Kutta de orden muy elevadoporque el aumento de precisión no compensa el trabajo adicional.

Page 30: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

30/57

Ejemplo de recapitulación

� Vamos a integrar la ODE y 0 D y�1t� 2t

�, empleando Euler, Heun,

Runge-Kutta y la rutina de Matlab ode45, que usa Runge-Kutta.

� La condición de partida es que y 0 D 0, en t D 0.

� La fórmula analítica de este problema no se conoce, por lo que se suple con laintegración numérica.

Page 31: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

31/57� Este es el script que lo lleva a cabo.

function test_ode45_1(relerr,abserr)% Comparación de métodos explícitos para igual evaluaciones de fclear all, close allecdif=@ec04; % ecuación diferencial a integrar: en ec04.mtspan=[0,2]; y0=0; h=.25;% Diversos métodos con mismas llamadas a f[T1,Y1]=eulere(ecdif,tspan,y0,h/4); % Euler[T2,Y2]=heun(ecdif,tspan,y0,h/2); % Heun[T3,Y3]=rk4(ecdif,tspan,y0,h); % Runge-Kutta orden 4options = odeset(’RelTol’,1.e-9,’AbsTol’,1.e-12);[T4,Y4]=ode45(ecdif,tspan,y0,options); % Exacto: R-K de Matlab%plot(T1,Y1,’:r’);axis([tspan(1), tspan(2), 0, .6]); % intervalos de ejesxlabel(’tiempo’); ylabel(’y’);hold on; gridplot(T2,Y2,’--g’); plot(T3,Y3,’-.b’); plot(T4,Y4,’-k’);

end%%% ----------

function yprima=ec04(t,y)% solución exacta desconocidaif t==0, yprima=1; else yprima=y*(-2*t+1/t); end

end

function [T,Y]=eulere(f,tspan,y0,h) % Método de Eulern=fix((tspan(2)-tspan(1))/h+1);T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));y=y0; t=tspan(1);for i=2:n

y1=y+h*f(t,y); t1=t+h; % Fórmula de EulerT(i,:)=t1; Y(i,:)=y1’; % tiempo valor de la funciónt=t1; y=y1; % se actualizan t e y

endend

function [T,Y]=heun(f,tspan,y0,h) % Método de Heunn=(tspan(2)-tspan(1))/h+1;T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));y=y0; t=tspan(1);for i=2:n

t1=t+h;yp=f(t,y); % predictor con Euler explícitoy1=y+h*yp;y1n=y+h*(yp+f(t1,y1))/2; % corrector con la regla trapezoidalT(i,:)=t1; Y(i,:)=y1n; % tiempo valor de la funciónt=t1; y=y1; % se actualizan t e y

endend

function [T,Y]=rk4(f,tspan,y0,h) % Runge-Kutta orden 4n=fix((tspan(2)-tspan(1))/h+1);T=tspan(1)*zeros(n,1); Y=y0*zeros(n,length(y0));y=y0; t=tspan(1);for i=2:n

t1=t+h;k1=h*f(t,y); % cálculo de los coeficientes kk2=h*f(t+h/2,y+k1/2);k3=h*f(t+h/2,y+k2/2);k4=h*f(t+h,y+k3);y1=y+(k1+2*k2+2*k3+k4)/6;T(i,:)=t1; Y(i,:)=y1; % tiempo valor de la funciónt=t1; y=y1; % se actualizan t e y

endend

Page 32: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

32/57

� Este es el resultado:

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

0.1

0.2

0.3

0.4

0.5

tiempo

ySolución de y'=y(1/t-2t)

EulerHeunrk4ode45

Page 33: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

33/57

Métodos Runge-Kutta de paso variable

� Hasta ahora hemos supuesto que h era fijo. En un intervalo de integraciónŒ0; T �, sin embargo, puede haber subintervalos de mayor o menor variación de lafunción y.t/ que conviene tratar con más detalle, con pasos mayores o máspequeños, según que la dificultad (o el error) sea menor o mayor.

� Para cambiar el paso, con un coste razonable de tiempo de cálculo, es necesarioestimar la magnitud del error local de truncamiento, lo cual puede hacerse condos fórmulas de distinto orden o utilizando dos pasos diferentes: h y h=2,habitualmente.

� Los métodos de Runge-Kutta de paso variable, también denominadosembebidos, o encajados, resuelven el problema dos veces usando los pasos h yh=2, y comparan los resultados

Page 34: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

34/57

Método Runge-Kutta-Fehlberg

� Su nombre viene de Runge, Kutta y Erwin Fehlberg, Alemania, 1911, EE.UU.,1990.

� Usa fórmulas Runge-Kutta de orden 4 y 5 respectivamente, concretamente,

k1Dhf .ti ; yi/

k2Dhf�ti C

14h; y1 C

14k1�

k3Dhf�ti C

38h; y1 C

332k1 C

932k2�

k4Dhf�ti C

1232h; y1 C

19322197

k1 �72002197

k2 C72962197

k3�

k5Dhf�ti C h; y1 C

439216k1 � 8k2 C

3680513k3 �

8454104

k4�

k6Dhf�ti C

12h; y1 �

827k1 C 2k2 �

35442565

k3 C18594104

k4 �1140k5�

yiC1Dyi C�25216k1 C

14082565

k3 C21974104

k4 �15k5�

ziC1Dyi C�16135k1 C

665612825

k3 C2856156430

k4 �950k5 C

255k6�:

Page 35: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

35/57

� La estimación del error que se comete en el paso es

eiC1DjziC1 � yiC1jDhˇ1360k1 �

1284275

k3 �219775240

k4 C150k5 C

255k6ˇ.

� Para una tolerancia del error, Tol y un paso inicial h, se calculan para empezary1, z1 y e1. Si se cumple que

ei

jyi j< Tol;

en este caso para i D 1, el valor de z1 sustituye a y1 y se procede al siguientepaso. Si no se cumple esa relación, se ensaya con

h D 0;8

�Tol jyi j

ei

�15

hi

y se vuelven a calcular los parámetros del paso.

Page 36: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

36/57

� La rutina de Matlab ode45 usa una variante de este método de 1980,denominada de Dormand-Prince por sus autores, cuyas fórmulas son

k1Dhf .ti ; yi/

k2Dhf�ti C

15h; y1 C

15k1�

k3Dhf�ti C

310h; y1 C

340k1 C

940k2�

k4Dhf�ti C

45h; y1 C

4445k1 �

5615k2 C

329k3�

k5Dhf�ti C

89h; y1 C

193726561

k1 �253602187

k2 C644486561

k3 �212729k4�

k6Dhf�ti C h; y1 C

90173168

k1 �35533k2 C

467325247

k3 C49176k4 �

510318656

k5�

ziC1Dyi C�35384k1 C

5001113

k3 C125192k4 �

21876784

k5 C1184k6�

k7Dhf .ti C h; ziC1/

yiC1Dyi C�517957600

k1 C757116695

k3 C393640k4 �

92097339200

k5 C1872100

k6 C14k7�:

Page 37: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

37/57

� La estimación del error que se comete en el paso es

eiC1DjziC1 � yiC1jDhˇ71

57600k1 �

7116695

k3 C711920

k4 �17253339200

k5 C22525k6 �

140k7ˇ.

No es necesario calcular yiC1, sólo eiC1.

� Si se cumplen las tolerancias, ziC1 será el nuevo punto y k1 será k7, por lo queno se desperdician cálculos.

Page 38: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

38/57

Métodos implícitos y problemas rígidos o stiff

� En los métodos explícitos una fórmula determina explícitamente una nuevaaproximación yiC1 a partir de datos de h, ti y yi .

� Hay un tipo de problemas, denominados stiff –rígidos–, para los que los métodosexplícitos evolucionan mal hacia la solución.

� Son aquellos que convergen relativamente rápido hacia una solución estable peroque tienen componentes transitorios importantes con un decaimiento oamortiguación mucho más rápido.

� Suelen modelizar procesos físicos con varios componentes con escalas de tiempodispares. El intervalo de tiempo con el que se les estudia puede ser bueno parauno de ellos pero no para todos.

Page 39: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

39/57

� Estudiemos por ejemplo la ecuación diferencial

y 0 D �˛�y � t2

�C 2t; t > 0; y0 D y.0/;

cuya solución analítica es

y.t/ D y0e�˛tC t2:

� Si ˛ es un número real grande, la solución varía rápidamente hasta que elcomponente exponencial se desvanece o amortigua.

� A partir de entonces prevalece el componente polinómico de variación lenta.

Page 40: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

40/57� En la figura se observa lo apuntado. La línea continua azul es la solución de laecuación, la discontinua verde –el componente exponencial– es la que sedesvanece antes. La roja corresponde al componente polinómico de variación enel tiempo mucho más lenta.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.2

0.4

0.6

0.8

1

1.2

1.4

t

y

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

ty

Figure ��� Euler solution �dash�dot� due to a perturbation �dashed� of y � t� �solid�introduced at time t � ���

Sti�ness not only depends on the di�erential equation under consideration� but the in�

terval of interest� the accuracy criteria� and the region of absolute stability of a numerical

method For nonlinear systems

y� � f�t�y�

sti�ness will be related to the magnitudes of the eigenvalues of the Jacobian fy�t�y�

These eigenvalues may have vastly di�erent sizes that vary as a function of t Thus�

detecting sti�ness can be a signi�cant problem in itself

In order to solve sti� problems well need a numerical method with a weaker stability

restriction than Eulers method �Implicit methods� provide the currently accepted

approach and well begin with the simplest implicit method� the backward �or implicit�

��

� Si se introduce una pequeña perturbación del componente t2 en t D 0;4, lasolución exacta se restablece enseguida. En cambio, el método de Eulerproduciría, con un h D 2, una perturbación importante que se iríarestableciendo después.

Page 41: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

41/57

El método de Euler hacía atrás

� Actúa de la siguiente manera:

y0 D y.0/

yiC1 D yi C hf .tiC1; yiC1/ :

La segunda expresión se obtiene de utilizar la aproximación atrasada de laderivada en tiC1, es decir y 0.tiC1/, en vez de la avanzada en ti como el métodode Euler.

� La información que se considera en cada paso tiene en cuenta los dos lados delintervalo Œti ; ti C h�.

� Euler hacia atrás es implícito, lo que significa que no da directamente unafórmula para la nueva aproximación yiC1 sino que ésta se obtiene mediante unproceso más elaborado.

Page 42: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

42/57

� Ese proceso, para la ecuación diferencial anterior, sería

yiC1 D yi C h�� ˛

�yiC1 � t

2�C 2t

�D yi � h˛yiC1 C h

�˛t2 C 2t

�:

Al final

yiC1 Dyi C h

�˛t2 C 2t

�1C ˛h

:

� Si a esta fórmula se le aplica un método iterativo de punto fijo –el de Newtonpor ejemplo–

y ! g.y/ Dy C h

�˛t2 C 2t

�1C ˛h

;

como g0.y/ D 1=.1C ˛h/ < 1, para cualquier ˛ positivo, el procesoconvergerá a un punto estacionario.

Page 43: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

43/57� Apliquemos estas ideas en un código de Matlab.

function [wi, win, y, ti] = back_euler_1(t0,x0,tf,N,TOL,Nmax)%% Backward Euler con y’=-alpha(y-t^2)+2t% Punto de arranque, t0, x0; final, tf; puntos Nif nargin<6, Nmax=100; end, if nargin<5, TOL=0.00001; endclose allti = [t0 zeros( 1,N )]; wi = zeros(1,N+1); win = zeros(1,N+1);wi(1) = x0’; win(1) = x0’; x01 = x0; y(1) = x0;h = ( tf-t0)/N;for i = 1:N

w0 = x0;for j = 1:Nmax

top = (w0 - x0) - h*beuler_1(t0+h,w0);bot = 1 - h*dbeuler_1(t0+h,w0);dw = top/bot;w0 = w0-dw;if abs(dw)<TOL, break; end;

end;x0 = w0;x01 = x01+h*beuler_1(t0,x01);t0 = t0 + h; ti(i+1) = t0;wi(i+1) = x0’; win(i+1) = x01;y(i+1) = y(1)*exp(-10*t0)+t0^2;

endplot(ti,wi,ti,win,ti,y), xlabel(’Tiempo’); ylabel(’y’)legend(’Back. Euler’, ’Euler’, ’Exacto’)

end

function f = beuler_1(t, p)f = -10*(p-t^2)+2*t;

end

function df = dbeuler_1(t, p)df = -10;

end

Resultado de>> back_euler_1(0,1,1.1,8);:

0 0.2 0.4 0.6 0.8 1 1.2 1.4-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

1.2

1.4

Tiempo

y

Back. EulerEulerExacto

Euler

Exacto

Back. Euler

Page 44: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

44/57

Métodos multipaso

� Los métodos que hemos analizado hasta ahora son monopaso, o de pasosencillo. El valor de yiC1 se calcula a partir de la información de un único punto.

� Los multipaso utilizan la información de más puntos anteriores con el objetivode hacer menos evaluaciones de la función para el mismo orden de error.

� Necesitan la ayuda de otros para dar los primeros pasos y no se adaptan bien adiscontinuidades en la solución: discontinuidades en las fuerzas aplicadas,impactos, enlaces que aparecen o desaparecen, etc.

Page 45: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

45/57� Tienen la forma general

yiC1 D

mXjD1

jyiC1�j C h

mXjD0

jf�tiC1�j ; yiC1�j

�:

Si ˇ0 D 0, el método es explícito; si ˇ0 ¤ 0, implícito. Los parámetros ˛i y ˇise calculan mediante interpolación polinómica.

� Un método de dos pasos explícito, o abierto, por ejemplo, sería

yiC1 D ˛1yi C h�ˇ1y

0

i C ˇ2y0

i�1

�(se indica y 0 D f .�; �/):

� Para calcular ˛1, ˇ1 y ˇ2 se interpola forzando a que la fórmula sea exacta paralos primeros tres monomios: 1, t y t2.

� Si y.t/ D 1, entonces y 0.t/ D 0 y se consigue así la primera ecuación

1 D ˛1 � 1C h .ˇ1 � 0C ˇ2 � 0/ :

Page 46: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

46/57

� Si y.t/ D t , entonces y 0.t/ D 1 y tenemos la segunda

tiC1 D ˛1ti C h�ˇ1 � 1C ˇ2 � 1

�:

� Si y.t/ D t2, entonces y 0.t/ D 2t y tenemos la tercera

t2iC1 D ˛1t2i C h

�ˇ1 � 2ti C ˇ2 � 2ti�1

�:

� Estas tres ecuaciones se deben cumplir para cualesquiera valores de ti , por loque podemos hacer ti�1 D 0, h D 1 (entonces ti D 1 y tiC1 D 2) y resolvemosel sistema lineal resultante 3 � 3 dando ˛1 D 1, ˇ1 D 3

2, ˇ2 D �12.

Page 47: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

47/57� La fórmula resultante del método explícito de dos pasos es

yiC1 D yi Ch

2

�3y 0i � y

0

i�1

�;

que se conoce como la fórmula del Método Adams-Bashforth de segundo orden.Debe el nombre a John Couch Adams, Reino Unido, 1819-1892, FrancisBashforth, Reino Unido, 1819-1912 y Forest Ray Moulton, EE.UU., 1872-1952.

� También así se desarrolla la fórmula implícita, o cerrada, de dos pasos:

yiC1 D ˛1yi C h�ˇ0y

0

iC1 C ˇ1y0

i

�:

� Para calcular ˛1, ˇ0 y ˇ1 forzaremos como antes a que la fórmula resultante seaexacta para los primeros tres monomios: 1, t y t2. Se obtienen estas tresecuaciones

1D ˛1 � 1C h�ˇ0 � 0C ˇ1 � 0

�tiC1 D ˛1ti C h

�ˇ0 � 1C ˇ1 � 1

�t2iC1 D ˛1t

2i C h

�ˇ0 � 2tiC1 C ˇ1 � 2ti

�:

Page 48: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

48/57� Haciendo ti D 0 y h D 1 (por lo que tiC1 D 1), y resolviendo el sistema 3 � 3resultante se llega a que ˛1 D 1, ˇ0 D 1

2y ˇ1 D 1

2. La fórmula resultante es

yiC1 D yi Ch

2

�y 0iC1 C y

0

i

�;

que da lugar al método implícito conocido como el método del trapezoide, oMétodo de Adams-Moulton de un paso.

� Algunas de las fórmulas más utilizadas:Fórmulas de multipaso explícitas de Adams-Bashforth

n Error2 yiC1 D yi C

h2

�3fi � fi�1

�5

12h3f 00.�/

3 yiC1 D yi Ch12

�23fi � 16fi�1 C 5fi�2

�38h4f 000.�/

4 yiC1 D yi Ch24

�55fi � 59fi�1 C 37fi�2 � 9fi�3

�251720h5f .4/.�/

5 yiC1 D yi Ch

720

�1901fi � 2744fi�1 C 2616fi�2 � 1274fi�3 C 251fi�4

�95

288h6f .5/.�/

Fórmulas de multipaso implícitas de Adams-Moultonn Error2 yiC1 D yi C

h2

�3fiC1 � fi

��

112h3f 00.�/

3 yiC1 D yi Ch12

�5fiC1 C 8fi � fi�1

��

124h4f 000.�/

4 yiC1 D yi Ch24

�9fiC1 C 19fi � 5fi�1 C fi�2

��

19720h5f .4/.�/

5 yiC1 D yi Ch

720

�251fiC1 C 646fi � 264fi�1 C 106fi�2 � 19fi�3

��

271440

h6f .5/.�/

Page 49: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

49/57

Métodos predictor-corrector

� Combinan métodos explícitos e implícitos en cada intervalo mediante un pasopredictor, que estima la solución en el nuevo punto, y otro corrector, que lamejora.

� Vencen así la dificultad de contar con un buen punto de partida para comenzarel proceso de integración.

Page 50: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

50/57

� El método de Adams-Bashforth-Moulton de cuarto orden, por ejemplo:

� Utiliza Adams-Bashforth de cuarto orden como predictor:

y�iC1 D yi Ch

24

�55fi � 59fi�1 C 37fi�2 � 9fi�3

�:

� Evalúa la función en el nuevo punto�tiC1; y

iC1

�f �iC1 D f

�tiC1; y

iC1

�:

� Utiliza Adams-Moulton de cuarto orden como corrector:

yiC1 D yi Ch

24

�9f �iC1 C 19fi � 5fi�1 C fi�2

�:

� Finalmente evalúa de nuevo la función en el punto�tiC1; yiC1

�fiC1 D f

�tiC1; yiC1

�:

Se conoce como método PECE (predice, evalúa, corrige, evalúa).

Page 51: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

51/57

� El método de Milne-Simpson:

� Utiliza como predictor

y�iC1 D yi�3 C4h

3

�2fi � fi�1 C 2fi�2

�:

� Como corrector

yiC1 D yi�1 Ch

3

�f �iC1 C 4fi C fi�1

�:

También se usa como corrector el de Hamming:

yiC1 D9yi � yi�2 C 3h

�f �iC1 C 2fi � 2fi�1

�8

:

Page 52: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

52/57� Utilicemos y 0 D 4

�t � t3

�y2 para probar el método predictor–corrector de

Adams-Bashforth-Moulton de segundo orden con las condiciones inicialesy.0/ D 0;5 y en el intervalo de tiempo Œ0; 2�.

� El siguiente programa hace el trabajo.

function [t,y]=Adams_Bas_Moul(inter,ic,n)% Método predictor-corrector de orden 2 de Adams-Bashforth-Moulton

h=(inter(2)-inter(1))/n; y(1)=ic; t(1)=inter(1); s=2;for i=1:s-1 % Trapezoide de un paso para

t(i+1)=t(i)+h; % inicializacióny(i+1)=trapstep(t(i),y(i),h);f(i)=ydot(t(i),y(i));

endfor i=s:n % Método multipaso

f(i)=ydot(t(i),y(i));t(i+1)=t(i)+h;y(i+1)=ab2step(t(i),i,y,f,h);f(i+1)=ydot(t(i+1),y(i+1));y(i+1)=am1step(t(i),i,y,f,h);

end[T4,Y4]=ode45(@ydot,inter,ic); close all, plot(t,y,T4,Y4)xlabel(’Tiempo’); ylabel(’y’)legend(’Adams-Bash.-Moul.’, ’ode45’)

end

function y=trapstep(t,x,h) % Un paso con trapezoidez1=ydot(t,x); g=x+h*z1; z2=ydot(t+h,g);y=x+h*(z1+z2)/2;

end

function z=ab2step(t,i,y,f,h) % Paso Adams-Bashforth orden 2z=y(i)+h*(3*f(i)-f(i-1))/2;

end

function z=am1step(t,i,y,f,h) % Paso Adams-Moulton orden 2z=y(i)+h*(f(i+1)+f(i))/2;

end

function z=ydot(t,y) % Función que se integraz=4*(t-t^3)*y^2;

end

Page 53: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

53/57

� El resultado de >> Adams_Bas_Moul([0 2],0.5,20); es este.

0, 0,5 1, 1,5 2, 2,50,

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1,

Tiempo

y

Adams-Bash.-Moul.ode45

Page 54: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

54/57

Sistemas de ecuaciones diferencialesordinarias

� En ingeniería, economía y ciencias sociales muchos sistemas se modelizan osimulan mediante sistemas de ecuaciones diferenciales. Basta para ello que elsistema tenga más de un grado de libertad o que haya que integrar unaecuación diferencial de orden superior a 1.

� Ejemplos son los puntos moviéndose en el plano o en el espacio, el movimientode un sólido rígido sin restricciones, mecanismos, vehículos, etc.

Page 55: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

55/57

� En general, un sistema de ecuaciones diferenciales ordinarias tiene la forma

y 01 D f1�t; y1; y2; : : : ; yn

�y 02 D f2

�t; y1; y2; : : : ; yn

�:::

y 0n D fn�t; y1; y2; : : : ; yn

�9>>>=>>>; y 0 D f .t;y/:

� Al aplicar los métodos vistos hasta ahora hay que tener en cuenta que lavariable dependiente y , la función f —y los coeficientes ki si se usaRunge-Kutta— son vectores.

� El método de Euler se aplicaría en la forma vectorial

y 0 D f .t;y/ ! y iC1 D y i C hf .ti ;y i/:

Page 56: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

56/57

Ecuaciones diferenciales de orden superior

� Una ecuación diferencial de orden n puede tener esta expresión

d ny

dtnD y.n/ D f

�t; y; y 0; y 00; y 000; : : : y.n�1/

�y.t0/ D y0y 0.t0/ D y

0

0

y 00.t0/ D y00

0

� � �

y.n�1/.t0/ D y.n�1/0

� Esta ecuación se puede transformar en un sistema de n ecuaciones diferencialesde orden uno.

Page 57: Integración de - José Luis de la Fuente O'Connor · h i j d e f g a b c 10 8 7 9 465 12 3 14/57 Siensayamostodoestoenunscript deMatlab,puederesultareste: % Script del método de

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

57/57

� Si se introducen las nuevas variables

y1 D y; y2 D y0; y3 D y

00; : : : ; yn D y.n�1/

se tendrá que

y 01 D y2y 02 D y3y 03 D y4

:::

y 0n�1 D yny 0n D f .x; y1; y2; : : : ; yn/

9>>>>>>>=>>>>>>>;y 0 D f .t;y/;

obteniéndose así un sistema de n ecuaciones diferenciales de primer orden con nincógnitas, al que habría que añadirle las condiciones iniciales y.t0/ D y0.