Está en la página 1de 68

Métodos Numéricos: notas para clase

Jesús Cardenal

28-04-2020
Capítulo 10

Integración de ecuaciones diferenciales


ordinarias. Problema de valor inicial

10.1. Introducción

10.1.1. Nociones preliminares


Antes de comenzar con la explicación de los métodos de integración, para centrar el problema se recuerdan
una serie de conceptos relacionados con las ecuaciones diferenciales.
Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción
Ecuación diferencial ordinaria: ecuación en la que hay una relación algebraica que se debe cumplir entre
una función de una sola variable y sus derivadas respecto a la variable.

Orden de la ecuación: orden de la máxima derivada que aparece en la relación algebraica,

Sistema de ecuaciones diferenciales ordinarias: ecuaciones simultáneas en las que aparecen relacio-
nadas algebraicamente varias funciones de la misma variable y sus derivadas respecto a la variable.

Problema de valor inicial: son conocidos los valores iniciales de la función y sus derivadas. No se conocen
otros valores intermedios de la función o sus derivadas. Es distinto por ejemplo del problema de extremos o de
contorno en donde además del valor inicial de la función y sus derivadas se conocen los valores de la función en
el contorno. Son problemas diferentes y tienen tratamientos diversos. Para aclarar la diferencia, considérese
el problema de calcular la deformada de una viga. Si la viga está en voladizo (un extremo empotrado y
otro libre) hay que integrar la ecuación de la elástica desde el empotramiento a lo largo de x con condiciones
iniciales (se conoce que el desplazamiento y los giros en el empotramiento, cuando x = 0 son nulos). Si la viga
estuviese biempotrada (los dos extremos empotrados), se conocen los valores de la función y sus derivadas
en un extremo, pero la integración de la elástica tiene que dar como resultado en el otro extremo los valores
conocidos. El primer caso es un problema de valor inicial; el segundo, un problema de extremos.

EPS Ferrol – Métodos Numéricos 4


Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción

10.1.2. Motivación. Ejemplos


Movimiento ideal de un péndulo simple en un plano vertical sometido al campo gravitatorio
Se considera el péndulo simple ideal de la figura 10.1 que
evoluciona libremente en un plano vertical sometido a la
acción de la gravedad. Tiene masa m y la longitud del hilo
es l. Su posición está determinada por el valor del ángulo
ϕ. La condición de equilibrio de fuerzas en la dirección ϕ
tangencial, se expresa como:
m
matangencial + mg sen ϕ = 0 mg sen ϕ
mg cos ϕ
con atangencial = αl = ϕ̈l, donde α es la aceleración angu- ϕ
lar. Por tanto el sistema se rige por la ecuación:
mω l = mϕl
ϕ̈l + g sen ϕ = 0 (10.1)
mg
Esta última ecuación es diferencial ordinaria porque solo mω 2l = mϕ 2l
aparece la función ϕ y sus derivadas respecto a la variable
independiente t. Es de segundo orden, porque la derivada Figura 10.1: Péndulo simple
de mayor grado es ϕ̈. Para poder integrar la ecuación (obtener la función ϕ(t) que cumple la ecuación
(10.1)) es necesario conocer cuánto vale la función y su primera derivada en el instante inicial.

EPS Ferrol – Métodos Numéricos 5


Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción

La solución analítica de esta ecuación es complicada porque es no lineal en ϕ (la función no aparece
explícitamente, sino dentro de la función seno).
En torno a la posición de equilibro estático (posición vertical), el ángulo ϕ es cero o muy pequeño. En
esta situación, el seno y el ángulo son infinitésimos equivalentes. Entonces la ecuación (10.1) se reescribe
como:

lϕ̈ + gϕ = 0 (10.2)
Esta última ecuación sí se puede integrar analíticamente. En concreto, si se prueban soluciones armónicas
de la forma,
ϕ = cest
se llega a obtener la solución
ϕ(t) = k cos (ωt + θ)
con
g
r
ω=
l
Los valores de ϕ y ϕ̇ en el instante inicial (deben ser conocidos puesto que es un problema de valor
inicial), permiten calcular el valor de las constantes k y θ.
En todo caso, como se ha dicho, esta sería la solución del problema de pequeñas oscilaciones en torno
a la posición de equilibrio, pero no resolvería la posición del péndulo en el caso general de la ecuación
(10.1).

EPS Ferrol – Métodos Numéricos 6


Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción

Caída de un paracaidista
Se considera el paracaidista de la figura 10.2. Sobre él actúa la
fuerza de la gravedad y la de retención del paracaídas. Se supone Cv2+Kx
que esta última tiene un término proporcional al cuadrado de la
velocidad de avance y otro que depende de la altura.
El modelo matemático de la caída de un objeto sometido a la
acción del campo gravitatorio, se puede formular estableciendo el
equilibrio de fuerzas. En este caso,
 
mg − Cv 2 + Kx = ma (10.3)
donde x es el espacio, v la velocidad, a la aceleración, m la masa
y C y K dos constantes que dependen de la forma del paracaídas
y del medio en que se realiza el lanzamiento.
Teniendo en cuenta que la velocidad y la aceleración son la prime-
ra y segunda derivadas del espacio respecto al tiempo, la ecuación
(10.3) se escribe de nuevo:
 
mg − C ẋ2 + Kx = mẍ (10.4)
mg
Que es una ecuación diferencial ordinaria de segundo orden cuya
integración analítica también puede complicarse.
Figura 10.2: Caída del paracaidista

EPS Ferrol – Métodos Numéricos 7


Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción

10.1.3. Sobre los métodos de integración numérica


En general los métodos de integración numérica que se van a explicar requieren:
Que la ecuación diferencial o sistema de ecuaciones diferenciales que se pretende integrar sea de primer
orden.
Que se exprese la derivada de la función o funciones de la variable independiente en función de las
propias funciones y de la variable independiente; esto es, suponiendo que y(t) sea la función y t la
variable independiente, tiene que existir una expresión explícita o implícita que establezca la relación
(se trata de escribir explícitamente la ecuación o sistema de ecuaciones diferenciales que se pretende
resolver):
ẏ(t) = f (y, t) (10.5)
O, en el caso de que haya más de una función, si estas se agrupan en el vector y,

ẏ(t) = f (y, t) (10.6)

Los procedimientos funcionan indistintamente para ecuaciones o para sistemas de ecuaciones diferen-
ciales ordinarias de primer orden.
Las ecuaciones diferenciales, (10.1) y (10.4) que modelan matemáticamente el comportamiento del péndulo
y la caída del paracaidista son ordinarias. Ambos problemas pueden clasificarse también como problemas de
valor inicial porque se suponen conocidas las funciones en el origen: habrá unos valores concretos para la
posición y velocidad en el instante inicial t = 0.

EPS Ferrol – Métodos Numéricos 8


Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción

Sin embargo, son de segundo orden y, por tanto, no cumplen uno de los supuestos que se han hecho y así
no se pueden integrar.
En general, cualquier ecuación o sistema de ecuaciones de orden superior al primero se puede reducir
a un sistema de ecuaciones de primer orden con tal de introducir cuantas funciones nuevas sean necesarias
para rebajar el orden. Por ejemplo, la ecuación del péndulo (10.1), se puede transformar en un sistema de
primer orden si se introduce la función ω(t), velocidad angular que, como se sabe es w(t) = ϕ̇(t). Entonces
la ecuación lϕ̈ + gϕ = 0 se transforma en un sistema:
ω − ϕ̇ = 0
(10.7)
lω̇ + g sen ϕ = 0
En esta última expresión, además de la función ϕ y sus derivadas, aparece la función ω y las suyas. Con el
resultado de que una ecuación diferencial de segundo orden se ha transformado en un sistema de ecuaciones
diferenciales de primer orden. Entonces ya se cumple la primera de las condiciones para aplicar un integrador
numérico.
Para cumplir la segunda condición, y adaptar el sistema a la expresión general de la ecuación (10.6), se
reescribe de la siguiente forma:
ϕ̇ = ω
g (10.8)
ω̇ = − g sen ϕ
l
Donde las derivadas de las funciones se escriben en función de las propias funciones y de la variable inde-
pendiente (en este caso la variable independiente no aparece explícitamente). En un caso general, ω̇ y ϕ̇
dependerían de ω, ϕ y t.

EPS Ferrol – Métodos Numéricos 9


Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción

Para reducir el orden de la ecuación (10.4) de la caída del paracaidista, hay que introducir la función
v = ẋ. Entonces, se llegaría al sistema de primer orden:

v − ẋ = 0
2 (10.9)
mv̇ + Cv + Kx = mg

Y, en la forma general que requiere la segunda condición,

ẋ = v
C 2 K (10.10)
v̇ = g − v − x
m m
En ambos casos, las derivadas de las funciones están desacopladas y es posible despejarlas explícitamente.
No siempre ocurre así. En la práctica es más común encontrar sistemas donde las variables están acopladas.
Para completar la explicación de la reducción del orden ecuaciones se introduce otro caso de estudio que
lleva a un planteamiento más general.
Movimiento ideal de un péndulo doble en un plano vertical sometido al campo gravitatorio
El péndulo doble de la figura 10.3 evoluciona libremente por la acción de su propio peso en un plano
vertical. Se pretende conocer su posición en cada instante de tiempo durante los 5 segundos que siguen
al abandono de la posición inicial. Son conocidas sus magnitudes físicas y el estado inicial.
Si se eligen como grados de libertad los ángulos ϕ1 y ϕ2 , la aplicación de las ecuaciones de Lagrange
para definir el movimiento del mecanismo, conduce a un sistema de ecuaciones diferenciales que tiene

EPS Ferrol – Métodos Numéricos 10


Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción

la siguiente forma:
  
m1 L21 + I1 + 4m2 L21 2m2 L1 L2 cos (ϕ1 − ϕ2 ) ϕ̈1 
  =
2m2 L1 L2 cos (ϕ1 − ϕ2 ) m2 L22 + I2 ϕ̈ 
2
  (10.11)
−2m 2
2 L1 L2 ϕ̇2 sen (ϕ1 − ϕ2 ) − (m1 + 2m2 ) gL1 sen ϕ1

=
 2m2 L1 L2 ϕ̇21 sen (ϕ1 − ϕ2 ) − m2 gL2 sen ϕ2 

O
2L1
ϕ1 1

m1 g
2
ϕ2

m2g
2L2

Figura 10.3: Péndulo doble

EPS Ferrol – Métodos Numéricos 11


Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción

Nuevamente las ecuaciones del movimiento contienen derivadas segundas. Por tanto, habrá que introducir
alguna función nueva que permita reducir el orden del sistema de ecuaciones (10.11). Como en los casos
anteriores, se introducen las funcines ω1 = ϕ̇1 y ω2 = ϕ̇2 . Entonces, ϕ̈1 = ω̇1 y ϕ̈2 = ω̇2 . Y así, el sistema de
ecuaciones se reescribe, una vez reducido el orden, de la siguiente manera:
  
m1 L21 + I1 + 4m2 L21 2m2 L1 L2 cos (ϕ1 − ϕ2 ) 0 0  ω̇1 

  

2
 
2m2 L1 L2 cos (ϕ1 − ϕ2 ) m L + I 0 0  ω̇2 
  
 
2 2 2
  =
0 0 1 0 ϕ̇1 
 
 
 




 

0 0 0 1 ϕ̇2 
  (10.12)


 −2m2 L1 L2 ω22 sen (ϕ1 − ϕ2 ) − (m1 + 2m2 ) gL1 sen ϕ1 


 
2
 
2m2 L1 L2 ω1 sen (ϕ1 − ϕ2 ) − m2 gL2 sen ϕ2

 

=



 ω1 




 


ω2 

Este sistema de ecuaciones relaciona un vector de derivadas con los valores de las funciones y la variable
independiente. Si se llama R a la matriz de los coeficientes, ẏ al vector de incógnitas y b al de los términos
independientes, se puede escribir,
ẏ = R−1 b (10.13)
que tiene la forma de la expresión general de la segunda condición (10.6).

EPS Ferrol – Métodos Numéricos 12


Capítulo 10. Integración EDO’s. Problema valor inicial 10.1. Introducción

Las derivadas de las funciones no se pueden despejar explícitamente. Cada vez que haya que calcularlas a
partir de los valores de las funciones y la variable independiente habrá que resolver el sistema de ecuaciones
lineales (10.12).
Aclaradas las condiciones preliminares para abordar la integración numérica, antes de pasar a la expli-
cación de los métodos, es conveniente tener presente que todos ellos son fórmulas de recurrencia que van
obteniendo sucesivos valores de la función o funciones para valores crecientes de la variable independiente1 a
partir de los valores anteriores.
Por ejemplo, si se toma el problema del péndulo simple, la variable independiente es el tiempo. Al tratarse
de un problema de valor inicial, deben ser conocidos los valores de la función o funciones en el instante
inicial. En ese caso, supóngase que para t = 0, ϕ = π/2 y ω = 0. Esto es, el péndulo parte del reposo y está
inicialmente en situación horizontal. A partir de esa situación, los métodos de integración van obteniendo
nuevos valores de la función o funciones (en este caso nuevos valores del ángulo ϕ y velocidad angular ω) a
medida que se va incrementando la variable (el tiempo).
Cada nuevo valor se obtiene a partir de los anteriores y no es posible saber cuánto vale la función en un
instante determinado si no se ha calculado su valor en todos los anteriores. Así, si se quisiese saber dónde está
el péndulo y qué velocidad angular tiene 5 s después de comenzar a evolucionar libremente, habría que partir
de la posición en t = 0 que es dato, después calcular la posición en ∆t, 2∆t, . . . hasta llegar a 5 segundos.
Cada uno de los instantes que se suceden se denomina etapa y el salto entre una y otra es el tamaño del
1
Es común que la variable independiente sea el tiempo, pero no es exclusivo. Hay fenómenos que dependen del espacio,
la temperatura, la concentración de un reactivo, ... A lo largo de este capítulo se emplea el tiempo como variable indepen-
diente porque hablar de instantes consecutivos es más intituitivo que refereirse al incremento de otras posibles variables. Esta
particularización no resta generalidad a los planteamientos o métodos.

EPS Ferrol – Métodos Numéricos 13


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

paso de integración o tamaño de etapa. La elección de este tamaño de etapa que se denotará en adelante como
h, tiene mucha trascendencia en el funcionamiento del método: un tamaño demasiado grande puede hacer que
el proceso de integración no funcione (diverja) y un tamaño demasiado pequeño ralentizaría innecesariamente
los cálculos.
Como se verá, todas las fórmulas de recurrencia de los métodos que se exponen a continuación proceden de
desarrollos matemáticos en los que en algún momento se introduce una aproximación. Estas aproximaciones
pueden ser tratadas como errores de truncamiento. En definitiva, cada vez que se aplica la fórmula se introduce
un error. Además, como las fórmulas obtienen los valores de la función en una etapa a partir de los valores en
las etapas anteriores (que supuestamente han sido calculados con cierto error), a ese error de truncamiento
inherente a las fórmulas de integración, se añade el acumulado de aplicarlas de forma recurrente.
Esta es la razón por la que a cada método se le atribuye un error de truncamiento local (el de cada paso de
integración) y otro error de truncamiento global (el acumulado al aplicar sucesivamente las fórmulas) hasta
llegar al valor final de la variable independiente.

10.2. Métodos de una etapa


La clasificación de métodos de una etapa se refiere a los procedimientos que emplean la información de una
etapa (un instante de tiempo) para calcular la siguiente. Más adelante se explicarán otros métodos multietapa,
donde el cálculo del valor de la función o funciones en una etapa, necesita varios de los valores calculados
previamente.

EPS Ferrol – Métodos Numéricos 14


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

10.2.1. Euler adelante


Supóngase conocido el valor inicial de una función y que depende de la variable independiente t, y0 = y(t0 )
y la relación entre la derivada de la función, la propia función y la variable independiente (tal como se ha
explicado), ẏ = f (y, t). Además, se escoge un tamaño de etapa h para producir incrementos finitos en la
variable.
La fórmula de Euler Adelante (Forward Euler) se deduce a partir de la aproximación de la derivada de
primer orden hacia adelante:
yi+1 − yi yi+1 − yi
ẏi ' = (10.14)
ti+1 − ti h
Donde el subíndice i se refiere a la i–ésima etapa.
Teniendo en cuenta que se considera de manera general que ẏi = f (yi , ti ), entonces, de la expresión de la
derivada (10.14), se deduce,

yi+1 ' yi + hf (yi , ti ) (10.15)


En definitiva, el valor de la función o funciones en la etapa siguiente es igual a lo que valen en la etapa
actual, más la derivada multiplicada por el tamaño del paso de integración. Nótese que la fórmula (10.15) es
explícita.
Para deducir el error de truncamiento local se plantea el desarrollo en serie de Taylor:
ÿi 2
yi+1 = yi + ẏi h + h + ... (10.16)
2

EPS Ferrol – Métodos Numéricos 15


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Pero, teniendo en cuenta nuevamente que ẏi = f (yi , ti )


y escribiendo el resto de Lagrange correspondiente al tér- yi+1
mino de segundo orden, entonces el desarrollo anterior se error local
reescribe como:

ÿξ 2
yi+1 = yi + f (yi , ti )h + h (10.17)
2 yi
Identificando términos entre las expresiones (10.15) y
(10.17) se puede afirmar que el error de truncamiento lo-
cal es proporcional al cuadrado del tamaño del paso de y(t)
integración, O(h2 ). Se puede demostrar2 que el error de h
truncamiento global es proporcional a h, O(h).
La interpretación geométrica de la integración se re-
presenta en la figura 10.4.
Desde un punto de vista práctico, la integración por
este método exige aplicar la fórmula (10.15) una vez tras
ti ti+1
otra (método recursivo) hasta alcanzar el valor de la va-
riable independiente que se proponga en el estudio.
Figura 10.4: Representación gráfica Euler adelante.
El código de Matlab para la aplicación de este proce-
dimiento podría ser el siguiente:

2
Brice Carnahan, H. A. Luther y James O. Wilkes. Applied numerical methods. New York: Wiley, 1969.

EPS Ferrol – Métodos Numéricos 16


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

function y = eulerAdelante(deriv,param,y0,xFin,h)
% y = eulerAdelante(deriv,param,y0,xFin,h)
%
% Calcula el valor de la función o funciones desde el valor inicial de la
% variable hasta el valor final xFin mediante el procedimiento de Euler
% adelante.
% Son datos de entrada el nombre de la función que evalúa la derivada o
% derivadas, los valores inciales de la función o funciones, el valor final
% de la variable independiente (hasta dónde se quiere integrar la solución),
% el tamaño del paso de integración y los posible parámetros del problema
% (masas, longitudes, etc) que se pasarán como tercer argumento a la
% función que evalúa las derivadas.

if nargin < 5, h=0.01; end % Valor por defecto del paso de integración
if nargin < 4
error('Faltan parámetros. Los cuatro primeros son obligatorios');
end

% El vector de valores iniciales de las funciones tiene que ser "columna"


% para que se puedan hacer las operaciones posteriores sin problema.
[m,n]=size(y0);
if n > m
y0=y0';
m=n;
end

EPS Ferrol – Métodos Numéricos 17


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

% Número de valores que contendrá el vector de salida


nstep=xFin/h+1;

% Inicialización del vector de salida


y=zeros(m,nstep);

% Se meten en el vector de salidas como primer conjunto de valores, los


% valores iniciales de la función o funciones.
i=1;
y(:,1)=y0;

% Bucle por los valores de la variable independiente. Se calculan los


% valores de la función o funciones con la fórmula de Euler adelante.
for x=h:h:xFin
y(:,i+1)=y(:,i)+h*feval(deriv,y(:,i),x,param);
i=i+1;
end

end

Nótese que, por generalidad, la llamada a la función que evalúa las derivadas con feval(), pasa los
valores de la función o funciones en el estado actual, el valor de la variable independiente y los parámetros
característicos del problema. En los ejemplos que se han propuesto las expresiones del modelo matemático no
dependen explícitamente de la variable independiente (el tiempo) así que ese parámetro no tendrá utilidad,
pero sí será necesario en otros casos más generales.

EPS Ferrol – Métodos Numéricos 18


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Para integrar una ecuación diferencial por este método con el código que se propone, hay que escribir
un fichero que calcule las derivadas en función de las funciones y la variable independiente. En el caso del
péndulo simple del primer ejemplo de la sección 10.1.2, la función podría ser la que se muestra a continuación,
que se encarga de calcular los valores de ϕ̇ y ω̇ de acuerdo con la expresión (10.8):
function der = penduloSimple (y,t,param)
% der = penduloSimple (y,t,param)
% Calcula el vector de derivadas del péndulo simple (sistema de ec.
% diferenciales) a partir de los valores de y, de t (no aparace en la
% fórmula del trapecio) y de los parámetros del problema.
% El vector y de entrada contiene los valores de
% y = [angulo phi
% velocidad angular omega]

if nargin < 3 || isempty(param)


L=1;
else
L=param(1);
end

% Evaluación de las derivadas de las funciones fi y omega

der=[y(2)
-9.81/L*sin(y(1))];

end

EPS Ferrol – Métodos Numéricos 19


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Entonces, si la longitud del péndulo es 1 m, la situación inicial viene dada por ϕ0 = π/2 rad, ω0 = 0 rad s−1 ,
se quiere conocer la evolución del péndulo durante 5 s a partir del momento inicial y se emplea un paso de
integración h = 0.01 s, hay que llamar al integrador de la siguiente manera:
>> y=eulerAdelante('penduloSimple',[pi/2;0],5,0.01,1);

El vector y de salida contiene los valores de ϕ y ω a lo largo del tiempo. Se puede comprobar de forma gráfica
la evolución del péndulo dibujando las sucesivas posiciones que va ocupando. Para ello solo hace falta conocer
ϕ (primera fila de la matriz y). La llamada a la función de dibujo es:
>> dibujoPenduloSimple(y(1,:))

La función de dibujo es:

function dibujoPenduloSimple(phi,fig,L)
% dibujoPenduloSimple(phi,fig,L)
% Dibuja todas las posiciones del péndulo simple a partir de los valores de
% phi calculados y la longitud del péndulo L. Lo "pinta" en la figura fig

if nargin < 3, L=1; end


if nargin < 2, fig=1; end
if nargin < 1, error('Hacen falta los valores del ángulo phi'); end

% dibuja el péndulo simple


posiciones=length(phi);
figure (fig);

EPS Ferrol – Métodos Numéricos 20


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

for i=1:posiciones
plot([0 L*sin(phi(i))],[0 -L*cos(phi(i))]);
axis([-1.5*L,1.5*L,-1.5*L,0.5]);
drawnow;
end

end

Si se hace la prueba se comprobará que lo que debería ser un movimiento armónico, con variaciones
del ángulo entre π/2 y −π/2, según lo calculado es un movimiento con amplitud creciente (el péndulo va
ganando energía y llega cada vez más alto). Se recomienda repetir la prueba con diferentes valores del paso
de integración h.
Más adelante se proporcionan las funciones para calcular las derivadas en el caso del ejemplo del péndulo
doble. Podría ser un buen ejercicio tratar de adelantarse, escribir la función penduloDoble análoga a la que
se propone para el péndulo simple y probarla con el integrador de Euler adelante.

10.2.2. Euler atrás


De manera análoga al desarrollo planteado para la deducción de la fórmula de Euler adelante, la fórmula
de Euler atrás (Backward Euler) se deduce a partir de la aproximación de la derivada de primer orden hacia
atrás:
yi+1 − yi yi+1 − yi
ẏi+1 ' = (10.18)
ti+1 − ti h

EPS Ferrol – Métodos Numéricos 21


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Donde nuevamente, el subíndice i se refiere a la i-ésima etapa.


Teniendo en cuenta que, según la nomenclatura que se está siguiendo, ẏi+1 = f (yi+1 , ti+1 ), entonces, de
la expresión anterior, se deduce,

yi+1 ' yi + hf (yi+1 , ti+1 ) (10.19)


En definitiva, el valor de la función o funciones en la etapa siguiente es igual a lo que valen en la etapa
actual más la derivada en la siguiente etapa multiplicada por el tamaño del paso de integración. Se llama la
atención sobre el hecho de que la fórmula (10.19) es implícita: para poder calcular yi+1 es necesario conocer
ẏi+1 y esta no se puede calcular sin saber cuánto vale yi+1 . Por eso, en cada etapa, con este método, es preciso
resolver una ecuación no lineal mediante una iteración de punto fijo. Los pasos serían:
(0)
Calcular un primer valor yi+1 por algún procedimiento explícito (en este caso la fórmula de Euler
adelante),

Mientras el error relativo aproximado sea mayor que un cierto valor prefijado, calcular sucesivos valores
(j)
yi+1 mediante la expresión recursiva,

(j) (j−1)
yi+1 ' yi + hf (yi+1 , ti+1 ) (10.20)

Al finalizar esta iteración se habrá obtenido el valor de yi+1 y se podrá comenzar con la siguiente etapa
en el proceso de integración. Es importante recalcar que en la ecuación (10.20) yi permanece invariable.

EPS Ferrol – Métodos Numéricos 22


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Para deducir el error de truncamiento local nuevamen-


te se plantea el desarrollo en serie de Taylor:
ÿξ 2
yi = yi+1 − f (yi+1 , ti+1 )h + h (10.21)
2
error local
De donde de obtiene el valor de yi+1 como, yi+1
ÿξ 2 yi
yi+1 = yi + f (yi+1 , ti+1 )h − h (10.22)
2
Ahora, identificando términos entre la fórmula de Eu- y(t)
ler atrás de la expresión (10.19) y esta última (10.22), se
puede afirmar que el error de truncamiento local es pro- h
porcional al cuadrado del tamaño del paso de integración:
O(h2 ). Como en el caso de Euler adelante, se puede demos-
trar3 que el error de truncamiento global es proporcional
a h: O(h).
La interpretación geométrica de la integración se re- ti ti+1
presenta en la figura 10.5.
Así pues, ambos métodos de Euler tienen los mismos Figura 10.5: Representación gráfica Euler atrás.
órdenes de error local y global, sin embargo, aparente-
mente, Euler atrás exige un mayor esfuerzo computacional (una iteración por cada etapa de integración).
3
Carnahan, Luther y Wilkes, Applied numerical methods.

EPS Ferrol – Métodos Numéricos 23


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

En general, se puede afirmar (más adelante en este capítulo se ilustrará con un ejemplo) que los métodos
implícitos son más estables (más robustos) que los explícitos del mismo orden. Además, los implícitos tienden
a introducir amortiguamiento en el sistema.
La función de Matlab para efectuar la integración por este procedimiento sería:
function y = eulerAtras(deriv,param,y0,xFin,h,tol,maxite)
% y = eulerAtras(deriv,param,y0,xFin,h,tol,maxite)
%
% Calcula el valor de la función o funciones desde el valor inicial de la
% variable hasta el valor final xFin mediante el procedimiento de Euler
% atrás.
% Son datos de entrada el nombre de la función que evalúa la derivada o
% derivadas, los valores inciales de la función o funciones, el valor final
% de la variable independiente (hasta dónde se quiere integrar la solución),
% el tamaño del paso de integración y los posible parámetros del problema
% (masas, longitudes, etc) que se pasarán como tercer argumento a la
% función que evalúa las derivadas.

if nargin < 7, maxite=10; end


if nargin < 6, tol=1e-8; end
if nargin < 5, h=0.01; end % Valor por defecto del paso de integración
if nargin < 4
error('Faltan parámetros. Los cuatro primeros son obligatorios');
end

% El vector de valores iniciales de las funciones tiene que ser "columna"

EPS Ferrol – Métodos Numéricos 24


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

% para que se puedan hacer las operaciones posteriores sin problema.


[m,n]=size(y0);
if n > m
y0=y0';
m=n;
end

% Número de valores que contendrá el vector de salida


nstep=xFin/h+1;

% Inicialización del vector de salida


y=zeros(m,nstep);

% Se meten en el vector de salidas como primer conjunto de valores, los


% valores iniciales de la función o funciones.
i=1;
y(:,1)=y0;

% Bucle por los valores de la variable independiente. Se calculan los


% valores de la función o funciones con la fórmula de Euler atrás.
for x=h:h:xFin
% Predicción del valor de yi+1
yNew=y(:,i)+h*feval(deriv,y(:,i),x,param);
% Correción (iteración de punto fijo)
era=2; ite=0;
while era > tol && ite < maxite

EPS Ferrol – Métodos Numéricos 25


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

% Euler atrás
y(:,i+1)=y(:,i)+h*feval(deriv,yNew,x,param);
era=norm(y(:,i+1)-yNew)/norm(y(:,i+1));
yNew=y(:,i+1);
ite=ite+1;
end
i=i+1;
end

end

Las instrucciones que siguen, efectúan la integración y la representación del resultado:

>> y=eulerAtras('penduloSimple',1,[pi/2;0],5);
>> dibujoPenduloSimple(y(1,:),2)

En este caso se ha llamado a la función de dibujo con un 2 como segundo parámetro para que represente la
evolución del péndulo en una ventana nueva (la simulación con Euler adelante se representó en la ventana
1). Si se conservan las ventanas de dibujo de Matlab se pueden comparar los resultados finales de ambas
simulaciones para comprobar que la posición al cabo de 5 s es muy diferente en uno y otro caso (se parecen
más si el tamaño del paso de integración h es muy pequeño). Además es notorio cómo en este último caso,
el péndulo va perdiendo energía. Esta es la manifestación de ese efecto de introducir amortiguamiento en el
sistema que es común a los métodos implícitos.

EPS Ferrol – Métodos Numéricos 26


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

10.2.3. Método de Heun y regla del trapecio


La fórmula del método de Heun es:
h y’i
yi+1 = yi + [f (yi , ti ) + f (ȳi+1 , ti+1 )] (10.23) y’i+1
2
Donde ȳi+1 es la estimación del valor de la función y en la etapa
error local
i + 1 que se obtiene al aplicar la fórmula de Euler Adelante. yi+1
Entonces, el método de Heun obtiene el valor de yi+1 en dos yi
pasos: 1/2(y’i+y’i+1)

Cálculo de ȳi+1 con Euler adelante: ȳi+1 = yi + hf (yi , ti ) y(t)


Cálculo del valor mejorado en i + 1 promediando las de- h
rivadas de acuerdo con la expresión (10.23).
El error de truncamiento local del método de Heun es O(h3 )
y el de truncamiento global O(h2 ).
La fórmula de la ecuación (10.23) es explícita si se procede
ti ti+1
en dos pasos como se ha explicado. El programa de Matlab para
este método se puede escribir a partir del que se ha propuesto
Figura 10.6: Interpretación regla del trapecio.
para el método de Euler adelante introduciendo el segundo paso
(el primero es propio de Euler adelate). La función para integrar
por este método quedaría:

EPS Ferrol – Métodos Numéricos 27


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

function y = heun(deriv,param,y0,xFin,h)
% y = heun(deriv,param,y0,xFin,h)
%
% Calcula el valor de la función o funciones desde el valor inicial de la
% variable hasta el valor final xFin mediante el procedimiento de Heun.
% Son datos de entrada el nombre de la función que evalúa la derivada o
% derivadas, los valores inciales de la función o funciones, el valor final
% de la variable independiente (hasta dónde se quiere integrar la solución),
% el tamaño del paso de integración y los posible parámetros del problema
% (masas, longitudes, etc) que se pasarán como tercer argumento a la
% función que evalúa las derivadas.

if nargin < 5, h=0.01; end % Valor por defecto del paso de integración
if nargin < 4
error('Faltan parámetros. Los cuatro primeros son obligatorios');
end

% El vector de valores iniciales de las funciones tiene que ser "columna"


% para que se puedan hacer las operaciones posteriores sin problema.
[m,n]=size(y0);
if n > m
y0=y0';
m=n;
end

% Número de valores que contendrá el vector de salida

EPS Ferrol – Métodos Numéricos 28


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

nstep=xFin/h+1;

% Inicialización del vector de salida


y=zeros(m,nstep);

% Se meten en el vector de salidas como primer conjunto de valores, los


% valores iniciales de la función o funciones.
i=1;
y(:,1)=y0;

% Bucle por los valores de la variable independiente. Se calculan los


% valores de la función o funciones con los dos pasos del procedimiento de
% Heun. Se separa el cálculo de la derivada en i porque ese valor se usa
% dos veces.
for x=h:h:xFin
derivi=feval(deriv,y(:,i),x,param);
yRaya=y(:,i)+h*derivi;
y(:,i+1)=y(:,i)+h/2*(derivi + feval(deriv,yRaya,x,param));
i=i+1;
end

end

La integración por este método del sistema de EDO’s del péndulo simple conduce a otro resultado (se
puede compara con los anteriores si se dibuja en una tercera ventana pasando un 3 como segundo argumento
a la función de dibujo). En este caso, la impresión es de mayor estabilidad: el péndulo quizá pierde un poco

EPS Ferrol – Métodos Numéricos 29


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

de energía (no llega a la horizontal en la oscilación pero está cerca).


Si en la fórmula del método de Heun de la expresión (10.23), se emplea la derivada en la etapa i + 1 en
vez de una estimación, la fórmula pasaría a ser implícita y exigiría una iteración. Esta fórmula implícita es
la de la Regla del Trapecio:

h
yi+1 = yi +
[f (yi , ti ) + f (yi+1 , ti+1 )] (10.24)
2
Como en el caso de la fórmula de Euler Atrás, para conocer el valor de las funciones yi+1 en la etapa i + 1
hay que iterar en j hasta la convergencia con la fórmula recurrente:

(j) hh 
(j−1)
i
yi+1 = yi + f (yi , ti ) + f yi+1 , ti+1 (10.25)
2
(0)
La primera estimación para iniciar esta iteración en j se hace por la formula de Euler adelante: yi+1 =
yi + hf (yi , ti ).
La Regla del Trapecio es A-estable4 . Como en el caso del método de Heun, el error de truncamiento local
es proporcional a h3 , O(h3 ) y el global a h2 , O(h2 ). En la medida en que es un método implícito, introducirá
amortiguamiento en el sistema.
4
El comportamiento de un método de integración numérica en un problema rígido (stiff ) se puede analizar aplicando ese
método a la integración de la ecuación diferencial y 0 = λy sujeta a la condición inicial y(0) = 1 con λ ∈ C. La solución analítica
de la ecuación diferencial es y(t) = eλt . Esta solución tiende a cero cuando t → ∞ para valores de k tal que <(λ) < 0. Si el
método numérico se comporta de la misma manera (la solución tiende a cero cuando la variable tiende a infinito) al integrar la
ecuación empleando un tamaño de etapa fijo, entonces se dice que el método es A-estable.

EPS Ferrol – Métodos Numéricos 30


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

La interpretación geométrica de la regla del trapecio se recoge en la figura 10.6.


Para elaborar una función de Matlab que haga la integración por la regla del trapecio, se puede partir
de la función de Euler atrás. Basta con cambiar la fórmula de un método por la del otro. El resultado se
muestra a continuación:
function y = trapecio(deriv,param,y0,xFin,h,tol,maxite)
% y = trapecio(deriv,param,y0,xFin,h,tol,maxite)
%
% Calcula el valor de la función o funciones desde el valor inicial de la
% variable hasta el valor final xFin mediante la regla del trapecio.
% Son datos de entrada el nombre de la función que evalúa la derivada o
% derivadas, los valores inciales de la función o funciones, el valor final
% de la variable independiente (hasta dónde se quiere integrar la solución),
% el tamaño del paso de integración y los posible parámetros del problema
% (masas, longitudes, etc) que se pasarán como tercer argumento a la
% función que evalúa las derivadas.

if nargin < 7, maxite=10; end


if nargin < 6, tol=1e-8; end
if nargin < 5, h=0.01; end % Valor por defecto del paso de integración
if nargin < 4
error('Faltan parámetros. Los cuatro primeros son obligatorios');
end

% El vector de valores iniciales de las funciones tiene que ser "columna"


% para que se puedan hacer las operaciones posteriores sin problema.

EPS Ferrol – Métodos Numéricos 31


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

[m,n]=size(y0);
if n > m
y0=y0';
m=n;
end

% Número de valores que contendrá el vector de salida


nstep=xFin/h+1;

% Inicialización del vector de salida


y=zeros(m,nstep);

% Se meten en el vector de salidas como primer conjunto de valores, los


% valores iniciales de la función o funciones.
i=1;
y(:,1)=y0;

% Bucle por los valores de la variable independiente. Se calculan los


% valores de la función o funciones con la fórmula de la regla del
% trapecio.
for x=h:h:xFin
% Derivada en i
derivi=feval(deriv,y(:,i),x,param);
% Predicción del valor de yi+1
yNew=y(:,i)+h*derivi;
% Correción: iteración de punto fijo con la fórmula de la regla del

EPS Ferrol – Métodos Numéricos 32


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

% trapecio
era=2; ite=0;
while era > tol && ite < maxite
% Trapecio
y(:,i+1)=y(:,i)+h/2*(derivi+feval(deriv,yNew,x,param));
era=norm(y(:,i+1)-yNew)/norm(y(:,i+1));
yNew=y(:,i+1);
ite=ite+1;
end
i=i+1;
end

end

Se puede comprobar que, como en el caso de Heun, la apariencia de la oscilación del péndulo es buena:
no pierde ni gana energía. Al ser la regla del trapecio un método implícito introduce amortiguamiento, pero
no es apreciable.

10.2.4. Otros casos de estudio


Para poder hacer otras comparaciones con los métodos de integración expuestos, se incluye a continuación
el código de Matlab para evaluar la expresión (10.12) del péndulo doble:

EPS Ferrol – Métodos Numéricos 33


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

function der = penduloDoble (y,t,param)


% der = penduloDoble (y,t,param)
% Calcula la derivada del vector de funciones del problema del doble
% péndulopara unos valores determinados de la función y la variable indepen-
% diente (en este caso no depende de t).
% El vector param contiene:
% param(1) --> masa_1
% param(2) --> masa_2
% param(3) --> Semilongitud_1
% param(4) --> Semilongitud_2

% Valores de los parámetros del problema


if nargin < 3 || isempty(param)
m1=3;
m2=5;
L1=0.5;
L2=0.5;
else
m1=param(1);
m2=param(2);
L1=param(3);
L2=param(4);
end

% Cálculo de los momentos de inercia de las barras


I1=m1/12*(2*L1)^2;

EPS Ferrol – Métodos Numéricos 34


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

I2=m2/12*(2*L2)^2;

% Formación de la matriz de coeficientes


coef=[m1*L1^2+I1+4*m2*L1^2 2*m2*L1*L2*cos(y(3)-y(4));
2*m2*L1*L2*cos(y(3)-y(4)) m2*L2^2+I2];

% Término independiente
tind=[-2*m2*L1*L2*y(2)^2*sin(y(3)-y(4))-(m1+2*m2)*9.81*L1*sin(y(3));
2*m2*L1*L2*y(1)^2*sin(y(3)-y(4))-m2*9.81*L2*sin(y(4))];

% Resolución del sistema de ecuaciones


der=[coef\tind;y(1);y(2)];

end

Los parámetros del problema son: masas, m1 = 3.0 kg y m2 = 5.0 kg; semilongitudes, L1 = 0.5 m y
L2 = 0.5 m. Condiciones iniciales: ω1 = −5 rad s−1 , ω2 = 1 rad s−1 , ϕ1 = π/2 rad, ϕ2 = π/2 rad. Entonces,
para integrar 5 s por la regla del trapecio, habrá que ejecutar:

>> y=trapecio('penduloDoble',[3;5;0.5;0.5],[-5;1;pi/2;pi/2],5);

Téngase en cuenta el orden en que se proporcionan los parámetros del problema y las condiciones iniciales.
En el vector de salida y, cada columna contiene ordenados los valores de ω1 , ω2 , ϕ1 y ϕ2 porque es el
orden en el que se ha escrito el sistema de ecuaciones de la expresión (10.12).
A la función de dibujo hay que pasarle los valores de los ángulos:

EPS Ferrol – Métodos Numéricos 35


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

>> dibujoPenduloDoble(y(3,:),y(4,:),5)

La función para dibujar el péndulo doble es:

function dibujoPenduloDoble(phi1,phi2,fig,l1,l2)
% dibujoPenduloDoble(phi1,phi2,fig,l1,l2)
% Dibuja las posiciones del péndulo doble dadas por los angulos phi1 y
% phi2. La representación se hace en la figura fig. l1 y l2 son las
% semilongitudes de las barras.

if nargin < 5, l2=0.5; end


if nargin < 4, l1=0.5; end
if nargin < 3, fig=1; end
if nargin < 2
error('Hace falta proporcionar el valor de los ángulos')
end

% Variables auxiliares que se emplean para determinar las coordenadas de


% los extremos de las barras
x=zeros(3,1);
y=zeros(3,1);
x(1)=0;
y(1)=0;

% Número de valores de ángulos calculados


posiciones=length(phi1);

EPS Ferrol – Métodos Numéricos 36


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

figure(fig); % La representación se hace en la figura fig


for i=1:posiciones
% Si los ángulos son mayores que 2*pi, se les quita 2*pi tantas
% veces como haga falta
if phi1(i) > 2.*pi; phi1(i)=phi1(i)-2.*pi*fix(phi1(i)/2./pi); end
if phi2(i) > 2.*pi; phi2(i)=phi2(i)-2.*pi*fix(phi2(i)/2./pi); end

% Se dibuja el mecanismo en la posición dada por los ángulos. En


% primer lugar hay que determinar las coordenadas absolutas
% de los extremos.
x(2)=2.*l1*sin(phi1(i));
y(2)=-2.*l1*cos(phi1(i));
x(3)=x(2)+2.*l2*sin(phi2(i));
y(3)=y(2)-2.*l2*cos(phi2(i));
plot(x,y);
axis([-2*l1-2*l2,2*l1+2*l2,-2*l1-2*l2,2*l1+2*l2]);
drawnow;
end

end

10.2.5. Métodos de Runge–Kutta


Es una familia de métodos que engloba fórmulas explícitas e implícitas pero que son considerados de una
sola etapa porque se basan en el resultado obtenido en la etapa anterior para calcular la siguiente.

EPS Ferrol – Métodos Numéricos 37


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Los métodos explícitos responden a la expresión general:

yi+1 = yi + hΦ(yi , ti , h) (10.26)

Donde Φ(yi , ti , h) es una evaluación compleja de la derivada que combina las derivadas en varios puntos
intermedios entre i e i + 1. En concreto esta función tiene la forma siguiente:

Φ(yi , ti , h) = a1 k1 + a2 k2 + . . . + an kn (10.27)

En la ecuación anterior, los valores de a1 , a2 , ..., an son constantes y k1 , k2 , ..., kn corresponden a evaluaciones
de la derivada conforme a las expresiones:
k1 = f (yi , ti )
k2 = f (yi + q11 hk1 , ti + p1 h)
k3 = f (yi + q21 hk1 + q22 hk2 , ti + p2 h)
k4 = f (yi + q31 hk1 + q32 hk2 + q33 hk3 , ti + p3 h) (10.28)
..
.
kn = f (yi + qn−1,1 hk1 + qn−1,2 hk2 + qn−1,3 hk3 + . . . + qn−1,n−1 hkn−1 , ti + pn−1 h)
Donde los parámetros qjm y pj son constantes.
Puede entenderse entonces que la expresión (10.27) corresponde a un promedio especial de derivadas en
el intervalo [i, i + 1].
A continuación se van a deducir los coeficientes del método de Runge–Kutta explícito de orden 2.

EPS Ferrol – Métodos Numéricos 38


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Método de Runge–Kutta de orden 2


La fórmula general (10.26) particularizada para el caso de dos derivadas en el intervalo, se concreta en la
expresión:
yi+1 = yi + h (a1 k1 + a2 k2 ) (10.29)
con
k1 = f (yi , ti ) (10.30)
y
k2 = f (yi + q11 hk1 , ti + p1 h) (10.31)
En definitiva, sustituyendo los valores de k1 y k2 en la expresión (10.29) se llega a:

yi+1 = yi + h [a1 f (yi , ti ) + a2 f (yi + q11 hk1 , ti + p1 h)] (10.32)

Para poder aplicar esta fórmula de integración hay que determinar los valores de a1 , a2 , q11 , y p1 . El
procedimiento para deducir el valor de estas constantes se basa en identificar los términos de la expresión
(10.32) con los que provienen de realizar el desarrollo en serie de la función y sus derivadas.
En concreto, la serie de Taylor para los valores de la función y en la etapa i + 1 se escribe como:
1
yi+1 = yi + f (yi , ti )h + f 0 (yi , ti )h2 + O(h3 ) (10.33)
2
Teniendo en cuenta por una lado que la derivada de la función y, f (y, t) depende de y y de t y, por otro
que y(t) es una función del tiempo, entonces, aplicando la regla de derivación en cadena, la derivada de f (y, t)

EPS Ferrol – Métodos Numéricos 39


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

será:
∂f (yi , ti ) dy(ti ) ∂f (yi , ti ) ∂f (yi , ti ) ∂f (yi , ti )
f 0 (yi , ti ) = + = f (yi , ti ) + (10.34)
∂y dt ∂t ∂y ∂t
Sustituyendo este valor de f 0 (yi , ti ) en el lugar que ocupa en la expresión (10.33), se llega a:
!
1 ∂f (yi , ti ) ∂f (yi , ti ) 2
yi+1 = yi + f (yi , ti )h + f (yi , ti ) + h + O(h3 ) =
2 ∂y ∂t
(10.35)
1 ∂f (yi , ti ) 1 ∂f (yi , ti ) 2
= yi + f (yi , ti )h + f (yi , ti )h2 + h + O(h3 )
2 ∂y 2 ∂t
Esta forma de expresar yi+1 a partir del desarrollo en serie se va a comparar con la fórmula de Runge-
Kutta de orden 2 de la expresión (10.32) para identificar términos y poder determinar los valores de los
parámetros.
Antes de efectuar la comparación es preciso expresar el valor de k2 de la fórmula (10.31) de otra manera.
En concreto, dado que k2 = f (yi + ∆yi , ti + ∆t), donde ∆yi = q11 hk1 y ∆t = p1 h, se podrá escribir el
desarrollo en serie:
∂f (yi , ti ) ∂f (yi , ti )
k2 = f (yi , ti ) + q11 hk1 + p1 h + O(h2 ) (10.36)
∂y ∂t
Introduciendo esta expresión de k2 en la fórmula (10.32) de Runge–Kutta de orden 2, donde se ha tenido
en cuenta que k1 = f (yi , ti ), se llega a:
" !#
∂f (yi , ti ) ∂f (yi , ti )
yi+1 = yi + h a1 f (yi , ti ) + a2 f (yi , ti ) + q11 hf (yi , ti ) + p1 h + O(h2 ) (10.37)
∂y ∂t

EPS Ferrol – Métodos Numéricos 40


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Agrupando y ordenando los términos,


∂f (yi , ti ) ∂f (yi , ti ) 2
yi+1 = yi + (a1 + a2 )f (yi , ti )h + a2 q11 f (yi , ti )h2 + a2 p1 h + O(h3 ) (10.38)
∂y ∂t
En este momento ya se puede establecer la equivalencia entre las expresiones de yi+1 que proceden del
desarrollo en serie y de la fórmula de Runge–Kutta de orden 2 expresadas respectivamente en la ecuaciones
(10.35) y (10.38). Identificando términos entre ellas, se concluye que existen las siguientes relaciones entre
los parámetros desconocidos:
a1 + a2 = 1
1
a2 q11 = (10.39)
2
1
a2 p 1 =
2
Que constituye un sistema de tres ecuaciones no lineales con cuatro incógnitas que no tiene solución única.
Las soluciones particulares más típicas son los que se derivan de asignar a a2 los valores a2 = 1/2, a2 = 1
y a2 = 2/3. Entonces,
Con a2 = 12 , entonces a1 = 12 , q11 = p1 = 1. La expresión general de Runge-Kutta de orden 2 particula-
rizada para estos valores es:
h
yi+1 = yi + [f (yi , ti ) + f (yi + hf (yi , ti ), ti + h)] (10.40)
2
Que, como puede comprobarse coincide con la fórmula (10.23) del método de Heun.

EPS Ferrol – Métodos Numéricos 41


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Con a2 = 1, entonces a1 = 0, q11 = p1 = 12 . La expresión general de Runge-Kutta de orden 2 particula-


rizada para estos valores es:
1 1
 
yi+1 = yi + hf yi + hf (yi , ti ), ti + h (10.41)
2 2
Que supone emplear la pendiente predicha para ti + h2 .
Por último, se demuestra5 que el error teórico mínimo se produce cuando se escoge a2 = 23 , que lleva a
a1 = 13 y q11 = p1 = 34 . En este caso la expresión de la fórmula de integración quedaría:
1 2
 
yi+1 = yi + h k1 + k2 (10.42)
3 3
con
k1 = f (yi , ti )

3 3

(10.43)
k2 = f yi + hk1 , ti + h
4 4
Cualquiera de las expresiones de Runge–Kutta de orden 2 tiene un error de truncamiento local de orden
tres, O(h3 ) y global de orden dos, O(h2 ).
El código de Matlab para implementar este método podría ser el que sigue:
5
Anthony Ralston. “Runge-Kutta Methods with Minimum Error Bounds”. En: Mathematics of Computation 16.80 (1962),
págs. 431-437. doi: https://doi.org/10.1090/S0025-5718-1962-0150954-0; Anthony Ralston y Philip Rabinowitz. A first
course in numerical analysis. New York: McGraw-Hill, 1978.

EPS Ferrol – Métodos Numéricos 42


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

function y = RK2(deriv,param,y0,xFin,h,factores)
% y = RK2(deriv,param,y0,xFin,h,factores)
%
% Calcula el valor de la función o funciones desde el valor inicial de la
% variable hasta el valor final xFin mediante el procedimiento de
% Runge-Kutta de orden 2.
% Son datos de entrada el nombre de la función que evalúa la derivada o
% derivadas, los valores inciales de la función o funciones, el valor final
% de la variable independiente (hasta dónde se quiere integrar la solución),
% el tamaño del paso de integración y los posible parámetros del problema
% (masas, longitudes, etc) que se pasarán como tercer argumento a la
% función que evalúa las derivadas. Además, en el vector factores se
% proporcionan los propios del método.

% Se toman como valores por defecto para el procedimiento los que


% teóricamente producen un error mínimo.
if nargin < 6 || isempty(factores)
a1=1/3; a2=2/3; q11=3/4; p1=3/4;
else
a1=factores(1);
a2=factores(2);
q11=factores(3);
p1=factores(4);
end
% Otros valores por defecto
if nargin < 5, h=0.01; end % Valor por defecto del paso de integración

EPS Ferrol – Métodos Numéricos 43


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

if nargin < 4
error('Faltan parámetros. Los cuatro primeros son obligatorios');
end

% El vector de valores iniciales de las funciones tiene que ser "columna"


% para que se puedan hacer las operaciones posteriores sin problema.
[m,n]=size(y0);
if n > m
y0=y0';
m=n;
end

% Número de valores que contendrá el vector de salida


nstep=xFin/h+1;

% Inicialización del vector de salida


y=zeros(m,nstep);

% Se meten en el vector de salidas como primer conjunto de valores, los


% valores iniciales de la función o funciones.
i=1;
y(:,1)=y0;

% Bucle por los valores de la variable independiente. Se calculan los


% valores de la función o funciones con la fórmula de Runge-Kutta de orden
% 2.

EPS Ferrol – Métodos Numéricos 44


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

for x=h:h:xFin
k1=feval(deriv,y(:,i),x,param);
k2=feval(deriv,y(:,i)+q11*h*k1,x+p1*h,param);
y(:,i+1)=y(:,i)+h*(a1*k1+a2*k2);
i=i+1;
end

end

Método de Runge-Kutta de orden 3


Según la expresión general (10.26) de los métodos explícitos de Runge-Kutta, la de orden 3 implica la
evaluación de la deriva en tres puntos:
yi+1 = yi + h (a1 k1 + a2 k2 + a3 k3 ) (10.44)
Donde los valores de k1 , k2 y k3 corresponden a las expresiones:
k1 = f (yi , ti )
k2 = f (yi + q11 hk1 , ti + p1 h) (10.45)
k3 = f (yi + q21 hk1 + q22 hk2 , ti + p2 h)
Un razonamiento análogo al que ha llevado a establecer las condiciones para determinar los parámetros
en el caso de la fórmula de orden 2, conduciría en este caso a un sistema de 6 ecuaciones con 8 incógnitas.
Así pues, cada solución particular proviene de escoger convenientemente el valor de dos de esas incógnitas.

EPS Ferrol – Métodos Numéricos 45


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Una expresión típica de este método de orden 3 es:

h
yi+1 = yi + (k1 + 4k2 + k3 ) (10.46)
6
Con
k1 = f (yi , ti )
1 1
 
k2 = f yi + hk1 , ti + h (10.47)
2 2
k3 = f (yi − hk1 + 2hk2 , ti + h)
El método de Runge-Kutta de orden 3 se usa con mucha frecuencia. El error de truncamiento local es
proporcional a la cuarta potencia del tamaño del paso de integración, O(h4 ) y el global al cubo de ese paso,
O(h3 ).
Debe resultar casi trivial elaborar una función de Matlab para implementar este método a partir de la
que se propone para el procedimiento de Runge–Kutta de orden 2.

Método de Runge-Kutta de orden 4


Con un error de truncamiento local O(h5 ) y global O(h4 ), probablemente es la fórmula más empleada en
la integración de las ecuaciones de la dinámica de sistemas mecánicos.
Como en los casos anteriores las ecuaciones que se plantean para la determinación de los coeficientes desco-
nocidos conducen a un sistema indeterminado que permite una gran variedad de valores para los coeficientes.

EPS Ferrol – Métodos Numéricos 46


Capítulo 10. Integración EDO’s. Problema valor inicial 10.2. Métodos Monoetapa

Quizá los más comunes son los de la siguiente expresión:

h
yi+1 = yi + (k1 + 2k2 + 2k3 + k4 ) (10.48)
6

Con,
k1 = f (yi , ti )
1 1
 
k2 = f yi + hk1 , ti + h
2 2  (10.49)
1 1

k3 = f yi + hk2 , ti + h
2 2
k4 = f (yi + hk3 , ti + h)

La implementación de este método en Matlab es trivial a partir de la función que se propone para el
método explícito de orden 2.

Otras fórmulas de Runge-Kutta

Existen otras fórmulas de Runge-Kutta explícitas de orden superior, de dos etapas, implícitas, etc. que
pueden consultarse en cualquier texto apropiado.

EPS Ferrol – Métodos Numéricos 47


Capítulo 10. Integración EDO’s. Problema valor inicial 10.3. Métodos Multietapa

10.3. Métodos multietapa


Tal como se ha comentado en la introducción, en estos métodos el cálculo de la función o funciones en
cada etapa depende de los valores de las funciones en varias etapas anteriores. Los hay explícitos, implícitos,
de un orden de error u otro, etc.
En esta sección solo se van a estudiar los de Adams-Bashforth y Adams-Moulton. Los primeros son
explícitos, los otros implícitos. Es práctica común aplicarlos de manera combinada: el explícito para predecir
el valor de las funciones en la etapa i + 1 y el implícito para corregir ese valor de manera que se obtenga un
resultado con más precisión. La aplicación de los dos métodos en tandem configura un esquema predicción–
corrección 6 del integrador que se emplea con mucha frecuencia.

10.3.1. Método de Adams–Bashforth


Las fórmulas de Adams–Bashforth tienen la expresión general:
n−1
βkB f (yi−k , ti−k ) + O(hn+1 )
X
yi+1 = yi + h (10.50)
k=0

donde los βkB son coeficientes cuyo valor se determina por el procedimiento que se explica más adelante7 .
Dependiendo del número de términos en el sumatorio de la expresión (10.50); esto es, del valor de n, se
tendrá una fórmula de orden 2, 3, ...
6
Prediction-correction en la bibliografía en inglés.
7
El superíndice B indica que son coeficientes de Bashforth. Más adelante se empleará superíndice M para los de Moulton.

EPS Ferrol – Métodos Numéricos 48


Capítulo 10. Integración EDO’s. Problema valor inicial 10.3. Métodos Multietapa

En concreto, si se particulariza para n = 2, la expresión (10.50) se concreta en:


 
yi+1 = yi + h β0B f (yi , ti ) + β1B f (yi−1 , ti−1 ) + O(h3 ) (10.51)

Como se puede apreciar, esta fórmula emplea las derivadas en el instante i e i − 1.


Cuando n = 3 la formula se concreta en:
 
yi+1 = yi + h β0B f (yi , ti ) + β1B f (yi−1 , ti−1 ) + β2B f (yi−2 , ti−2 ) + O(h4 ) (10.52)

que involucra a las derivadas en i, i − 1 e i − 2.


Cada fórmula de Adams–Bashforth se deduce a partir del desarrollo en serie de Taylor. Dependiendo de
que se tomen más o menos términos se llega a una expresión con un error de truncamiento u otro. En concreto
el valor de la función yi+1 se escribe a partir del valor yi
1 1
yi+1 = yi + fi h + fi0 h2 + fi00 h3 + . . . (10.53)
2 3!
donde fi ≡ f (yi , ti ) ≡ y 0 (ti ). Agrupando términos en esta última expresión, se tiene:
1 1
 
yi+1 = yi + h fi + fi0 h + fi00 h2 + . . . (10.54)
2 3!
La aproximación de f mediante un desarrollo en serie hacia atrás será:
1
fi−1 = fi − fi0 h + fi00 h2 + O(h3 ) (10.55)
2

EPS Ferrol – Métodos Numéricos 49


Capítulo 10. Integración EDO’s. Problema valor inicial 10.3. Métodos Multietapa

de donde se puede despejar la derivada como:

fi − fi−1 fi00
fi0 = + h + O(h2 ) (10.56)
h 2
Sustituyendo esta expresión de fi0 en la fórmula (10.54), se tiene:

1 fi − fi−1 fi00
" ! #
1
yi+1 = y i + h fi + + h + O(h2 ) h + fi00 h2 + . . . =
2 h 2 3!
(10.57)
3 1 5
 
= yi + h fi − fi−1 + fi00 h2 + O(h3 )
2 2 12
Ordenando y agrupando, se llega a la fórmula de Adams–Bashforth de segundo orden:
3 1 5
 
yi+1 = yi + h fi − fi−1 + fξ00 h3 (10.58)
2 2 12
Esta fórmula es explícita, tiene un error de truncamiento local O(h3 ) y global O(h2 ). Si se compara esta
última expresión con la que se ha propuesto como fórmula general de segundo orden en la ecuación (10.51),
se identifican los valores de β0B = 23 y β1B = − 12 .
Si en vez de tomar tres términos, el desarrollo en serie se truncase a partir del cuarto, se obtendrían los
coeficientes para la fórmula de orden 3 de la expresión (10.52). El cuadro 10.1 compendia los valores de estos
coeficientes para las fórmulas de Adams-Bashforth hasta el orden 6. Es importante hacer notar que en este
caso los coeficientes son fijos (no existen indeterminaciones como en las fórmulas de Runge–Kutta)

EPS Ferrol – Métodos Numéricos 50


Capítulo 10. Integración EDO’s. Problema valor inicial 10.3. Métodos Multietapa

Órden β0B β1B β2B β3B β4B β5B Truncamiento local O(hn+1 )
1 0
1 1 2
f (ξ)h2
3 5 00
2 2
− 12 12
f (ξ)h3
23 9 000
3 12
− 16
12
5
12 24
f (ξ)h4
55
4 24
− 59
24
37
24
9
− 24 251 (4)
720
f (ξ)h5
1901
5 720
− 2774
720
2616
720
− 1274
720
251
720
475 (5)
1440
f (ξ)h6
4277
6 1440
− 7923
1440
9982
1440
− 7298
1440
2877
1440
475
− 1440 19087 (6)
60480
f (ξ)h7

Cuadro 10.1: Coeficientes β de Adams-Bashforth

10.3.2. Método de Adams–Moulton


Las fórmulas de Adams–Moulton responden a una expresión general similar a la de Adams-Bashforth:

n−1
βkM f (yi+1−k , ti+1−k ) + O(hn+1 )
X
yi+1 = yi + h (10.59)
k=0

donde los βkM son coeficientes cuyo valor se determina por un procedimiento análogo al que se ha explicado
en la sección 10.3.1.
La fórmula (10.59) es implícita. Para verlo con más claridad se particulariza para n = 2 y entonces se

EPS Ferrol – Métodos Numéricos 51


Capítulo 10. Integración EDO’s. Problema valor inicial 10.3. Métodos Multietapa

obtiene: h i
yi+1 = yi + h β0M f (yi+1 , ti+1 ) + β1M f (yi , ti ) + O(h3 ) (10.60)

Así, para calcular el valor de yi+1 se emplean las derivadas en el instante i+1 e i. Pero para calcular f (yi+1 , ti+1 )
es preciso conocer yi+1 que es precisamente lo que se pretende calcular ... La fórmula es implícita: hará falta
una estimación de yi+1 para comenzar una iteración de punto fijo hasta la convergencia.
En general para todas las fórmulas de Adams–Moulton, la estimación inicial se hace con una fórmula de
Adams–Bashforth del mismo orden.
El planteamiento general para la obtención de los coeficientes es similar al del Adams–Bashforth: a partir
de un desarrollo en serie en el que se introducen las expresiones de las derivadas obtenidas a partir de otros
desarrollos en serie.
Por ejemplo, para la fórmula de orden 2 se parte del desarrollo en serie de Taylor,

1 0 2 1 00 3
yi = yi+1 − fi+1 h + fi+1 h − fi+1 h + ... (10.61)
2 3!
Despejando yi+1 ,
1 0 1 00 2
 
yi+1 = yi + h fi+1 − fi+1 h + fi+1 h + ... (10.62)
2 3!
0
Para aproximar el valor de la derivada fi+1 se recurre al desarrollo en serie de fi ,

0 1 00 2
fi = fi+1 − fi+1 h + fi+1 h + ... (10.63)
2

EPS Ferrol – Métodos Numéricos 52


Capítulo 10. Integración EDO’s. Problema valor inicial 10.3. Métodos Multietapa

0
De donde se despeja fi+1 ,
0 fi+1 − fi 1 00
fi+1 = + fi+1 h + . . . (10.64)
h 2
0
Introduciendo el valor de fi+1 en el desarrollo de la expresión 10.62 se tiene:
" ! #
1 fi+1 − fi 1 00 1 00 2
yi+1 = yi + h fi+1 − + fi+1 h + . . . h + fi+1 h + ... =
2 h 2 3!
(10.65)
1 1 1 00 2 1 00 2
 
= yi + h fi+1 − fi+1 + fi − fi+1 h + fi+1 h + O(h3 )
2 2 4 3!
Operando y agrupando los términos a partir del segundo orden en el resto correspondiente, se obtiene la
fórmula de Adams–Moulton de segundo orden.
1 1 1
 
yi+1 = yi + h fi+1 + fi − fξ00 h3 (10.66)
2 2 12
El cuadro 10.2 recoge los valores para las fórmulas de Adams–Moulton de órdenes 2 a 6.

10.3.3. Valoración y aspectos prácticos de los métodos de Adams–Bashforth


y Adams–Moulton
La última columna de los cuadros 10.1 y 10.2 muestra los errores de truncamiento local de las fórmulas de
Adams–Bashforth y Adams–Moulton. El error de truncamiento global en todos los casos es un orden menor.
Así, por ejemplo, si el error de truncamiento local es O(h5 ), el global es O(h4 ).

EPS Ferrol – Métodos Numéricos 53


Capítulo 10. Integración EDO’s. Problema valor inicial 10.3. Métodos Multietapa

Órden β0M β1M β2M β3M β4M β5M Truncamiento local O(hn+1 )
1 1 1 00
2 2 2
− 12 f (ξ)h3
5 8 1 1 000
3 12 12
− 12 − 24 f (ξ)h4
9 19 5 1 19 (4)
4 24 24
− 24 24
− 720 f (ξ)h5
251 646
5 720 720
− 264
720
106
720
19
− 720 27
− 1440 f (5) (ξ)h6
475 1427 798 482 173 27 863
6 1440 1440
− 1440 1440
− 1440 1440
− 60480 f (6) (ξ)h7

Cuadro 10.2: Coeficientes β de Adams-Moulton

Se puede constatar que, a igualdad de orden del método, Adams–Bashforth y Adams–Moulton tienen el
mismo orden de magnitud en el error de truncamiento, aunque Adams–Moulton, por ser implícito, es más
estable.
Tal como se decía en la introducción, es práctica común emplear los métodos de Adams en combinación:
Adams–Bashforth (explícito) para predecir el nuevo valor de la función o funciones en la etapa i + 1 y
Adams–Moulton para corregir, en lo que se denomina un proceso de predicción–corrección.
Tal como se ha explicado, la aplicación de cualquier método multietapa exige conocer la función o funciones
para varios valores de la variable independiente (no basta con el instante inicial). De ahí que para arrancar
un método multietapa sea necesario emplear un método monoetapa. Para este cometido se suele escoger un
método de Runge–Kutta del mismo orden.
Por ejemplo, si se quisiese emplear un integrador predicción–corrección para alguno de los ejemplos pro-

EPS Ferrol – Métodos Numéricos 54


Capítulo 10. Integración EDO’s. Problema valor inicial 10.3. Métodos Multietapa

puestos, combinando las fórmulas de Adams–Bashforth y Adams–Moulton de orden 3, se estaría prediciendo


el valor de yi+1 con la fórmula (10.52) (los coeficientes se toman del cuadro 10.1),

23 16 5
 
yi+1 = yi + h f (yi , ti ) − f (yi−1 , ti−1 ) + f (yi−2 , ti−2 ) (10.67)
12 12 12
y corrigiendo con la expresión de Adams–Moulton equivalente,

5 8 1
 
yi+1 = yi + h f (yi+1 , ti+1 ) + f (yi , ti ) − f (yi−1 , ti−1 ) (10.68)
12 12 12

Se puede comprobar que, para aplicar la fórmula de predicción (10.67), es necesario conocer fi , fi−1 y fi−2 .
Si se trata de un problema de valor inicial, serán calculables las derivadas en el instante inicial, f0 = f (y0 , t0 )
porque y0 es dato. Este valor de f0 se hará corresponder con fi−2 en la fórmula. Por tanto, la primera vez
que se evalúe la expresión de Adams–Bashforth de orden 3 a partir del estado inicial, se concretará en:

23 16 5
 
yi+1 = yi + h f (y2 , t2 ) − f (y1 , t1 ) + f (y0 , t0 )
12 12 12

Así, resulta patente que para comenzar la integración, además del dato inicial, f0 = f (y0 , t0 ), es imprescin-
dible conocer f1 = f (y1 , t1 ) y f2 = f (y2 , t2 ). Los valores de estas derivadas se calculan a partir de los valores
de la función y estos deben ser obtenidos por un método de integración monoetapa. Tal como se decía, es
común escoger el Runge-Kutta explícito del mismo orden. En el caso del ejemplo, sería un Runge–Kutta de
orden 3 con el que se calculará y1 a partir de y0 e y2 a partir de y1 .

EPS Ferrol – Métodos Numéricos 55


Capítulo 10. Integración EDO’s. Problema valor inicial 10.4. Estabilidad

Entonces, para generalizar el supuesto, si se pretende resolver una ecuación o sistema de ecuaciones
diferenciales ordinarias (problema de valor inicial) por un método multietapa de orden n, antes de comenzar
a aplicar las fórmulas propias del método multietapa, hay que calcular n − 1 valores de la función o funciones
por un método monoetapa que tenga un error de truncamiento equivalente (Runge–Kutta del mismo orden).

10.4. Estabilidad
Cualquiera de los métodos expuestos se caracteriza por unos errores de truncamiento local y global. Si el
tamaño del paso de integración no es adecuado, esos errores pueden crecer de tal manera que provoquen el
fallo del proceso y se impida alcanzar el resultado.
Este efecto es particularmente acusado cuando la ecuación o el sistema son rígidos 8 . Para ilustrar cómo
afecta el tamaño de etapa en el proceso de integración se va a estudiar el caso de la ecuación diferencial,
y 0 = λy (10.69)
con λ ∈ C e y(0) = 1.
Suponiendo que la variable independiente sea t, la solución analítica de esta ecuación para t > 0 es:
y(t) = eλt (10.70)
8
En matemáticas, una ecuación es stiff si ciertos métodos de integración son numéricamente inestables (devergen), salvo que
se escoja un tamaño del paso de integración h extremadamente pequeño. Es difícil definir de manera precisa la rigidez en este
contexto, pero la idea es que la ecuación tiene algunos términos (exponentes con un valor grande, por ejemplo) que hacen que
el valor de la solución varíe rápidamente (gran pendiente).

EPS Ferrol – Métodos Numéricos 56


Capítulo 10. Integración EDO’s. Problema valor inicial 10.4. Estabilidad

Si se considera que h es el tamaño del paso de integración, para un cierto tn = n · h, la función solución
valdrá,
y(tn ) = yn = eλnh (10.71)
Para comprobar el comportamiento de los métodos numéricos de integración, se va a comparar este
resultado analítico con el que se obtendría si la ecuación diferencial se integrase por los métodos de Euler
adelante y Euler Atrás.

10.4.1. Estudio de la estabilidad de Euler Adelante


La aplicación de la fórmula (10.15) del método de Euler adelante para obtener el valor de la solución de
la ecuación diferencial (10.69) en tn , lleva a:
0
yn = yn−1 + hyn−1 (10.72)
Teniendo en cuenta que y 0 = λy, entonces:
yn = yn−1 + hλyn−1 = (1 + λh) yn−1 (10.73)
De manera análoga, el valor de yn−1 estimado por el procedimiento de Euler adelante será:
yn−1 = yn−2 + hλyn−2 = (1 + λh) yn−2 (10.74)
Si se sustituye este resultado en la expresión (10.72),
yn = (1 + λh) (1 + λh) yn−2 = (1 + λh)2 yn−2 (10.75)

EPS Ferrol – Métodos Numéricos 57


Capítulo 10. Integración EDO’s. Problema valor inicial 10.4. Estabilidad

Entonces, si se aplica recurrentemente este resultado,


yn = (1 + λh)n y0 (10.76)
Pero la condición inicial de la ecuación diferencial dice que y0 = 1. Entonces el valor de la solución de la
ecuación y 0 = λy, con y0 = 1 obtenido mediante Euler adelante es:
yn = (1 + λh)n (10.77)
Mientras el valor exacto es el de la expresión (10.71),
yn = eλnh (10.78)
Para ver hasta qué punto coinciden, se desarrollan ambas expresiones.
La potencia n–ésima del binomio (1 + λh) de la expresión (10.77), se puede escribir como9 :
9
Recuérdese que, ! ! ! !
n n n 0 n n−1 1 n 1 n−1 n
(a + b) = a b + a b + ... a b + a0 bn ,
0 1 n−1 n
con !
n n!
=
m m!(n − m)!
Entonces,
n n(n − 1) n−2 2 n(n − 1)(n − 2) n−3 3
(a + b) = an + nan−1 b + a b + a b + . . . + bn
2! 3!

EPS Ferrol – Métodos Numéricos 58


Capítulo 10. Integración EDO’s. Problema valor inicial 10.4. Estabilidad

n(n − 1) 2 2
(1 + λh)n = 1 + nλh + λ h + ... (10.79)
2
A su vez, el desarrollo en serie de la solución exacta de la expresión (10.70) es:

1 1
enλh = 1 + nλh + n2 λ2 h2 + n3 λ3 h3 + . . . (10.80)
2 6

Comparando las expresiones (10.79) y (10.80), se constata que solo coinciden exactamente los dos primeros
términos. A partir del tercero, son del mismo orden, pero no iguales.
Teniendo en cuenta que Euler Adelante es un método con un error de truncamiento global proporcional
a h, O(h), se puede garantizar que si h tiende a cero, la solución en tn converge. Sin embargo, ¿cuánto se
puede aumentar el valor de h manteniendo la estabilidad del método?
Para estudiarlo, se va a imponer la condición de que tanto la solución analítica como la numérica conduzcan
al mismo valor con tn suficientemente grande.
En concreto, la solución analítica cumple10 :

lı́m eλt = 0, con <(λ) < 0 (10.81)


t→∞

10
Si λ es complejo, basta con que su parte real sea menor que la unidad, ya que: eat eiωt = eat (cos ωt + i sen ωt), donde
(cos ωt + i sen ωt) está acotado.

EPS Ferrol – Métodos Numéricos 59


Capítulo 10. Integración EDO’s. Problema valor inicial 10.4. Estabilidad

En el caso de la solución numérica de la expresión


(10.77), se cumple, Im(λh)
(
n 0, si |1 + λh| < 1
lı́m (1 + λh) = (10.82) i
t→∞ ∞, si |1 + λh| > 1

Por tanto, para que ambas soluciones se compor- Región de estabilidad


ten igual cuando t → ∞, hay que garantizar que
|1 + λh| < 1. Entonces,
-2 -1 1 Re(λh)
−2 < (λh) < 0 (10.83)

Esta condición es bastante restrictiva, ya que li-


mita la región de estabilidad del método a un círculo
de radio 1 cuyo centro está situado en el eje real en -i
el valor −1 (ver figura 10.7).
Por ejemplo, si λ = −107 (gran velocidad de caí-
da; problema stiff ), la condición (10.83) llevaría a Figura 10.7: Zona de estabilidad Euler adelante
establecer un límite para el tamaño del paso de inte-
gración h ≤ 2 · 10−7 . Para cualquier tamaño de etapa
mayor que este, la integración se volvería inestable.
En problemas con valores de λ más pequeños en valor absoluto, se podrían escoger tamaños del paso de
integración mayores, aunque permanecería la restricción de región de estabilidad pequeña.

EPS Ferrol – Métodos Numéricos 60


Capítulo 10. Integración EDO’s. Problema valor inicial 10.4. Estabilidad

10.4.2. Estudio de la estabilidad de Euler Atrás


El estudio de estabilidad para el método de Euler atrás
es análogo al que se ha hecho previamente. En primer lu-
gar, se deduce la forma de la solución aproximada que Im(λh)
procede de aplicar la fórmula (10.19) de Euler atrás de
manera recurrente. Para ello se toma la expresión gene- i
ral del proceso de integración y se tiene en cuenta que la
ecuación diferencial dice y 0 = λy:
Región de inestabilidad
0
yi+1 = yi + hyi+1 = yi + hλyi+1 (10.84)
Re(λh)
Así pues, -1 1 2
yi
yi+1 = (10.85)
1 − λh
Entonces, para tn = n · h,
yn−1 yn−2 -i
yn = = = ... =
1 − λh (1 − λh)2
y0 1 (10.86)
= n = Figura 10.8: Estabilidad de Euler atrás
(1 − λh) (1 − λh)n
El comportamiento de esta solución numérica hay que
contrastarlo con el de la solución analítica de la expresión (10.81). En este caso, con <(λ) < 1, la condición

EPS Ferrol – Métodos Numéricos 61


Capítulo 10. Integración EDO’s. Problema valor inicial 10.5. Errores

para que (10.86) converja a cero cuando el tiempo crece suficientemente es:
1
lı́m = 0, con |1 − λh| > 1 (10.87)
n→∞ (1 − λh)n
En este caso, el círculo de radio 1, centrado en el valor 1 de la parte real, marca la región de inestabilidad
(figura 10.8). Esto muestra que la estabilidad del método no depende de una manera tan crítica del valor de h.
En todo caso, hay valores del paso de integración compatibles con la estabilidad, que producen un resultado
numérico idéntico al analítico cuando la variable tiende a infinito, pero que pueden no ofrecer resultados tan
buenos en valores intermedios de la variable.
De este estudio de la estabilidad, se puede concluir que Euler atrás es más estable (su región de estabilidad
es mucho mayor) que Euler adelante. Esta conclusión es extrapolable para afirmar que, en general, los métodos
implícitos son más estables que los explícitos.
También se puede afirmar (sin demostración) que cuanto mayor es el orden de un método, cabe esperar
una mayor precisión para un mismo valor del paso de integración, pero también hay una tendencia mayor a
la inestabilidad (es más crítica la elección de un tamaño de etapa adecuado).

10.5. Errores y métodos adaptativos


10.5.1. Estimación del error local
A lo largo del curso se ha comentado acerca de la posibilidad de conocer o no el error en la solución
obtenida mediante un procedimiento numérico. Se ha dicho que en general no es posible calcular el error

EPS Ferrol – Métodos Numéricos 62


Capítulo 10. Integración EDO’s. Problema valor inicial 10.5. Errores

verdadero (diferencia entre la solución exacta y la solución aproximada) aunque sí es posible hacer una
valoración aproximada, comparando dos soluciones. En este sentido, los métodos de integración no son una
excepción: no hay una forma directa de calcular el error verdadero cometido en un paso de integración o en
la integración global de un problema.
Para hacer una estimación del error en cada paso (error de truncamiento local) hay básicamente dos
opciones:

efectuar la integración con un determinado tamaño de etapa mediante dos procedimientos con distinto
orden de error (por ejemplo un método de orden tres y otro de orden cuatro) y comparar los resultados
por uno y otro procedimiento (error relativo aproximado),

efectuar la integración por un mismo método dos veces. La primera con un determinado tamaño del
paso de integración h y la segunda con un paso más pequeño. La forma típica de proceder es reducir a
la mitad el tamaño de etapa. De esta manera, en un caso se calcularía el valor de la función en t + h con
un solo salto de tamaño h y en el otro habría que dar dos saltos de tamaño h/2 para llegar a obtener
yt+h .

Con cualquiera de estas dos estrategias, la comparación del resultado mejor con el resultado peor permite
evaluar un error aproximado.
En algún caso, la cuantificación de este error hace posible corregir el resultado mejor para que sea aún
más preciso. Considérese, por ejemplo, un método cuyo error de truncamiento local sea proporcional a h4 . La
integración desde ti hasta ti+1 se hace dos veces. En primer lugar con un solo salto de tamaño h y después,
con dos saltos de tamaño h/2.

EPS Ferrol – Métodos Numéricos 63


Capítulo 10. Integración EDO’s. Problema valor inicial 10.5. Errores

(1)
Si se llama yi+1 al resultado obtenido en el primer caso (con
(2)
un solo salto de tamaño h) e yi+1 al obtenido cuando se dan dos yi +1
saltos de tamaño h/2, al haber reducido el tamaño de etapa a la 1
mitad y depender el error de truncamiento local de h4 , el error yi(2)
+1
se habrá reducido a la dieciseisava parte.
16
La figura 10.9 representa tanto el valor real de la función en 15
ti+1 como los aproximados siguiendo el esquema de integración
descrito. Según el razonamiento que se ha hecho relativo a la
proporción entre los errores de truncamiento local en uno y otro y i(1)
+1
caso, se puede escribir:
(1) (2) (1)
(2)
yi+1 − yi+1 yi+1 − yi+1
yi+1 − yi+1 ' ' (10.88)
16 15
Por eso, si se llama E a la diferencia entre los dos valores
(2) (1)
calculados = yi+1 − yi+1 (téngase en cuenta que el valor real ti ti +1 2 ti +1
de yi+1 no es conocido), se puede estimar que el error cometido
en la mejor aproximación es la quinceava parte de E. Una vez Figura 10.9: Corrección en base a la estimación del
estimado el error es posible corregir esta mejor aproximación: error
(2) (2) E
ȳi+1 = yi+1 + (10.89)
15
La corrección del error produce una mejora en el error de truncamiento local que cambia en uno el orden
del método. Esto es, con la corrección, el error de truncamiento local pasaría de O(h4 ) a O(h5 ).

EPS Ferrol – Métodos Numéricos 64


Capítulo 10. Integración EDO’s. Problema valor inicial 10.5. Errores

Respecto a la otra estrategia de evaluar el error, la que consiste en emplear dos métodos con órdenes
diferentes, los casos más típicos se refieren a particularizaciones de fórmulas de Runge–Kutta explícitas.
Recuérdese que la determinación de los coeficientes de estas fórmulas (ver sección 10.2.5) conducían a un
sistema indeterminado y, por tanto, había grados de libertad para elegir los coeficientes de una manera u
otra. Esta circunstancia se aprovecha para conseguir que algunos valores de las derivadas ki de una y otra
fórmulas que se combinan sean comunes y se reduzca así el número de veces que hay que evaluar la derivada.
Un caso concreto es la combinación de una fórmula de Runge–Kutta de orden 4 con otra de orden 5. En
principio, la de orden 4 necesita cuatro derivadas: k41 , k42 , k43 y k44 . La de orden 5 necesita 6: k51 , k52 , k53 ,
k54 , k55 y k56 . En total son 10 derivadas, aunque una de ellas, la primera, es común: k41 ≡ k51 . Así pues, serían
9 derivadas diferentes. Sin embargo, teniendo en cuenta la libertad para escoger los coeficientes, el método
de Runge–Kutta–Fehlberg reduce a 6 el número de evaluaciones de la derivada con arreglo a las siguientes
expresiones11 :
25 1408 2197 1
 
(4)
yi+1 = yi + h k1 + k3 + k4 − k5 (10.90)
216 2565 4104 5
16 6656 28561 9 2
 
(5)
yi+1 = yi + h k1 + k3 + k4 − k5 + k6 (10.91)
135 12825 56430 50 55
11
Hay otros métodos similares que combinan las fórmulas de Runge–Kutta de orden 4 y 5. Por ejemplo los de Dormand–
Prince (J Dormand y P. Prince. “A family of embedded Runge–Kutta formulae”. En: Journal of Computational and Applied
Mathematics 6.1 [1980], págs. 19-26. doi: https://doi.org/10.1016/0771-050X(80)90013-3) o Cash–Karpque que dan lugar
a unos coeficientes diferentes a los que se muestran en estas páginas, pero que en síntesis son equivalentes. Fehlberg escoge los
coeficientes para minizar el error del método de orden 4, mientras en Dormand–Prince se escogen para minimizar el de orden 5.
El integrador ode45 de Octave y Matlab implementa las fórmulas de Norman–Prince.

EPS Ferrol – Métodos Numéricos 65


Capítulo 10. Integración EDO’s. Problema valor inicial 10.5. Errores

Con:
k1 = f (yi , ti )
1 1
k2 = f (yi + hk1 , ti + h)
4 4
3 9 3
k3 = f (yi + hk1 + hk2 , ti + h)
32 32 8
1932 7200 7296 12 (10.92)
k4 = f (yi + hk1 − hk2 + hk3 , ti + h)
2197 2197 2197 13
439 3680 845
k5 = f (yi + hk1 − 8hk2 + hk3 − hk4 , ti + h)
216 513 4104
8 3544 1859 11 1
k6 = f (yi − hk1 + 2hk2 − hk3 + hk4 − hk5 , ti + h)
27 2565 4104 40 2

10.5.2. Métodos adaptativos


En la sección dedicada a la estabilidad se ha hablado de los problemas stiff. Puede ocurrir que una
determinada ecuación o sistema de ecuaciones diferenciales tengan un comportamiento stiff en algún intervalo
de la variable, mientras en otras zonas no se da esa circunstancia. O también habrá casos en que la función
tiene una variación suave en un parte del intervalo y más rizada en otra (figura 10.10). En estos casos haría
falta escoger un tamaño del paso de integración h muy pequeño, tal como se ha visto, porque en caso contrario
la zona stiff o rizada no se podría resolver adecuadamente. Si efectivamente se toma un paso h muy pequeño,
el proceso de integración se ralentiza y además el error no será uniforme en todo el intervalo.

EPS Ferrol – Métodos Numéricos 66


Capítulo 10. Integración EDO’s. Problema valor inicial 10.5. Errores

Si se pretende hacer una integración


con error local uniforme a lo largo de todo y
el intervalo de la variable, es preciso llevar
control de ese error y acomodar el tamaño
del paso para mantenerlo entre los límites
establecidos.

La figura 10.10 muestra lo que podría


ser una función que varía de manera suave
en la mayor parte del intervalo representa-
do. La elección de un paso de integración
relativamente grande sería apropiada para t
la integración salvo en la zona rizada in-
termedia que seguramente exigiría un pa-
so más pequeño si se desea mantener un
Figura 10.10: Ejemplo de función con rizado en un intervalo de la variable
error de truncamiento uniforme.

Para poder adaptar el paso es preciso


hacer la estimación del error y acomodar
h en función de este error. Este proceso que parece relativamente sencillo, reviste una complicación moderada
porque la alteración frecuente del tamaño de etapa desestabiliza la integración. Además, es importante tener
en cuenta que los métodos multietapa se adaptan mal a estos cambios del tamaño del paso de integración.
De la misma manera, tratar problemas con funciones discontinuas incrementa la complejidad de la solución.

EPS Ferrol – Métodos Numéricos 67


Capítulo 10. Integración EDO’s. Problema valor inicial 10.6. Funciones Matlab ODE’s

Una estrategia para adaptar el tamaño del paso h en el caso de integradores de Runge–Kutta podría ser12 :
α
∆deseada
hnuevo = hactual (10.93)
∆actual

Donde ∆ es la precisión (deseada o actual) y α toma los valores: 0,2, cuando hay que aumentar el tamaño
de h (∆actual ≤ ∆deseada ) y 0,25, cuando hay que reducirlo.

10.6. Funciones intrínsecas de Matlab para integración de ODE’s


Matlab clasifica los solvers para ecuaciones diferenciales en grupos13 :

Para problemas no–stiff : ode45, ode23, ode113,

Para problemas stiff : ode15s, ode23s, ode23t, ode23tb,

Solvers implícitos: ode15i, decic.

Los parámetros de estas funciones se consultan y cambian con las funciones odeget y odeset.
Se recomienda mirar el help para conocer su utilidad y manejo.
12
William Press y col. Numerical recipes in FORTRAN 77: the art of scientific computing. Fortran Numerical Recipes 1.
Cambridge, England: Cambridge University Press, 1992.
13
Ver https://www.mathworks.com/help/matlab/ordinary-differential-equations.html

EPS Ferrol – Métodos Numéricos 68

También podría gustarte