Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas de Ecuaciones Diferenciales e Integracion
Sistemas de Ecuaciones Diferenciales e Integracion
Sistemas de Ecuaciones Diferenciales e Integracion
TEMA 6.
ECUACIONES DIFERENCIALES
ORDINARIAS E INTEGRACIÓN
NUMÉRICA
1. Introducción
2. Nomenclatura
3. Ecuaciones diferenciales ordinarias
4. Métodos explícitos de resolución de ecuaciones diferenciales
5. Métodos implícitos de resolución de ecuaciones diferenciales
6. Métodos predictor-corrector
7. Sistemas de ecuaciones diferenciales acoplados
8. Conversión de una ecuación diferencial de orden n en un sistema de n
ecuaciones diferenciales ordinarias
9. Estabilidad
10. Evaluación de integrales
11. RESUMEN
12. Programación en Matlab®
Cálculo numérico en Ingeniería
Tema 6: Ecuaciones diferenciales ordinarias e integración
1. Introducción
2. Nomenclatura
dy
= f ( x, y )
dy
F x, y, = 0, en su forma mas habitual EDO.(1)
dx dx
Donde tanto ‘F’ como ‘f’ son vectores de n funciones; ‘y’ es un vector de n
variables dependientes y ‘x’ es la variable independiente.
Para encontrar una solución para este sistema necesitamos un valor para y
para un cierto valor dado de la variable x.
y = y0 para x = x 0
A 1 → B 2 → C
K K
dC A
= −k1C A
dt
dC B
= k1C A − k 2 C A Valores iniciales típicos son :
dt
dC C
= k 2C B C A0 = 1, C B0 = 0, C C0 = 0
dt
Se debe tener en cuenta que los valores de yi nunca serán totalmente exactos
sino solamente una aproximación al verdadero valor.
= f (x0 , y 0 )
dy
EDO.(2)
dx x = x0
Tema 6: Ecuaciones diferenciales ordinarias e integración
f ( x 0 + h, y 0 ) = f ( x 0 , y 0 ) + h f ( x 0 , y 0 ) EDO.(3)
yi +1 = y i + h f ( xi , y i ) EDO.(4)
Esta relación de recursión también puede ser deducida del desarrollo de las
series de Taylor. Si lo hiciéramos así, podríamos comprobar que el error de
truncamiento dependerá de ∆x2, o lo que es lo mismo h2, correspondiente a la
omisión de términos de orden 2 o superior. Sin embargo, si bien el error de
truncamiento local es proporcional a h2 el error global es proporcional a h.
Solución exacta
y4
y3 Solución Euler
y2
y1
y0
h h h h h h
x0 x1 x2 x3 x4 x5 x6
Figura 1. Ejemplo de solución numérica usando el método de Euler.
Recordando que:
dy
y' = = f ( x, y ) EDO.(6)
dx
∂ ∂ f ( x, y ) dy ∂ ∂ f ( x, y )
f ( x, y )
dy ' d
y" = = f ( x, y ) = f ( x, y ) + = f ( x, y ) +
dx dx ∂ x ∂y dx ∂ x ∂y
EDO.(7)
yi +1 = y i + h f ( x, y ) + 1
2 h 2 f x ( x, y ) + 1 2 h 2 f y ( x, y ) f ( x , y ) + C T h 3
EDO.(8)
∂ f ( x, y ) ∂ f ( x, y )
donde f x ( x, y ) = , f y ( x, y ) =
∂x ∂y
Por otra parte el método de Runge Kutta de 2º orden, propone expresar yi+1
como una combinación lineal de dos valores de la función:
y i +1 = y i + A h f 0 + B h f 1 EDO.(9)
donde
Tema 6: Ecuaciones diferenciales ordinarias e integración
f 0 = f (x, y )
EDO.(10)
f 1 = f ( x + Ph , y + Q h f 0 )
CASO 1: A=1/2 . Esta elección lleva a que B=1/2; P=1; Q=1; y por lo tanto:
h
[ f ( x, y ) + f ( x + h , y + h f ( x, y )
y i +1 ≈ y i + )] EDO.(14)
2
el resultado es el método de Heun
CASO 2: A=0. Esta elección lleva a B=1; P=1/2; y Q=1/2. y por lo tanto:
h h
y i +1 = y i + h f x + , y + f ( x, y ) EDO. (15)
2 2
yi +1 = y i + w1 k1 + w2 k 2 + w3 k 3 + w4 k 4 EDO.(16)
donde:
k1 = h f ( x i , y i )
k 2 = h f ( xi + a1 h , y i + b1 k1 )
EDO. (17)
k 3 = h f ( xi + a 2 h , y i + b2 k1 + b3 k 2 )
k 4 = h f ( xi + a 3 h , y i + b4 k1 + b5 k 2 + b6 k 3 )
Y
Y
K1 =f(X0,Y0 )
K1 =f(X0,Y0 )
Y0
X0 X
X0 X
Y
Y
K4=f(X0 +∆X,Y0+K3∆X)
Y0 K3 =f(X0+∆X/2,Y0+K2∆X/2)
K2
∆X/2
Y0
X0 X
K3
∆X/2 ∆X/2
X0 X
yi +1 − y i − f ( xi +1 , y i +1 )∆x = 0
∆x
yi +1 = y i + [ f (xi , yi ) + f (xi +1 , yi +1 )] EDO. (20)
2
6. Métodos predictor-
redictor-corrector
pi +1 = yi +
h
(− 9 f i−3 + 37 f i−2 − 59 f i−1 + 55 f i ) EDO. (22)
24
El corrector se desarrolla de forma similar. El valor pi+1 que se acaba de
obtener se puede utilizar para construir un segundo polinomio de Lagrange
utilizando los puntos (xi-2, fi-2), (xi-1, fi-1), (xi, fi) y el nuevo punto que se acaba de
obtener ( xi +1 , f i +1 ) = ( xi +1 , f ( xi +1 , pi +1 ) ) . Si lo integramos nuevamente sobre el
intervalo [tk,tk+1] obtenemos el corrector de Adams Moulton:
yi +1 = yi +
h
( f i−2 − 5 f i−1 + 19 f i + 9 f i+1 ) EDO. (23)
24
− 19
ε i = y ( xi +1 ) − y i +1 ≈ ( yi +1 − pi +1 ) EDO. (24)
270
19 yi +1 − pi +1 h
Si > Err Re l entonces hacer h=
270 yi+1 + Small 2
19 yi +1 − pi +1 Err Re l
Si < entonces hacer h = 2h
270 yi+1 + Small 100
Tema 6: Ecuaciones diferenciales ordinarias e integración
dy1
= f 1 ( x, y )
dx
dy 2
= f 2 ( x, y )
dx
EDO. (25)
dy n
= f n ( x, y )
dx
y n , j +1 = y n, j + f n (x j , y j )∆t
Cálculo numérico en Ingeniería
Puesto que esta basado en el método de Euler, este será un método de primer
orden, con lo cual el error será proporcional a ∆x2. Debemos especificar que la
variable que más rápidamente cambie, será la que limite la longitud de
exploración utilizada para mantener la estabilidad.
De igual forma que para el método explícito de Euler, la extensión del método
de Runge-Kutta puede ser utilizada directamente para la resolución de sistema
de n ecuaciones diferenciales acopladas. Consideremos el método de Runge-
Kutta de cuarto orden.
y i , j +1 = y i , j +
∆t
6
[
k1, i, j + 2k 2, i, j + 2k 3, i, j + k 4, i, j ] EDO. (27)
d2y
+ A( x ) + B( x ) y + C ( x ) = 0
dy
2
EDO. (29)
dx dx
y (x0 ) = a
dy
=b
dx x0
dy
Haciendo el cambio de variable z = y reordenando, la ecuación diferencial
dx
queda:
= − A( x )z − B(x ) y − C ( x )
dz
dx
dy
=z
dx
dy
z1 =
dx
dz d 2 y
z2 = =
dx dx 2 EDO. (30)
dz n− 2 d n −1 y
z n −1 = = n −1
dx dx
9. Estabilidad
dy
= −λ y y(0)=1 donde λ es real y positivo. EDO. (31)
dx
dε
= λε EDO. (32)
dx
ε n +1 − ε n
= − λε n ; ε n+1 = ε n ( 1- λ h)
h
εn +1
La estabilidad requiere ≤1
εn
por lo tanto el método de Euler requiere 1 − λh ≤ 1 ; 0 ≤ λh ≤ 2 . Así el método
2
de Euler es inestable para incrementos de tiempo mayores que
λ
Si lo aplicamos a la regla del trapecio:
1− hλ 2
εn + 1 = εn ; EDO. (33)
1+ hλ 2
Se puede observar que es estable independientemente del valor de λ(hλ>0)
Sin embargo presenta el inconveniente de que a valores altos de hλ ( por
ejemplo hλ→∞)
εn+1= - εn presenta oscilaciones alrededor de la solución.
εn
ε n +1 = que es estable y no oscila.
1+ λ h
dy
= Ay det A - λ I = 0 EDO. (34)
dx
Se dice que un sistema es “stiff” (se puede traducir por rígido o tendente a no
estable) utilizando un parámetro “stiffness ratio”.
max Re λ i
S⋅R=
min Re λ i
El mayor de los valores propios del sistema va a gobernar lo “no estable” que
es el sistema (el tamaño del paso de integración) y el menor de los valores
propios (generalmente) el tiempo final de integración.
Valores típicos:
n
dy i df
= f i ( y ( x n )) + ∑ i ( y i − y i ( x n ))
dx j = i dy i
En este último caso el carácter de “stiff” del sistema varía con el tiempo y se
debe recalcular a cada paso de integración.
f (b ) − f (a )
f (x ) = f (a ) + (x − a ) EDO. (35)
b − a
f (a ) + f (b )
I = ∫ f ( x )dx = (b − a )
b
EDO. (36)
a
2
f(x)
Aprox.
lineal
a b x
Figura 3. Aproximación considerada en la regla de los trapecios.
Tema 6: Ecuaciones diferenciales ordinarias e integración
n
f (x i ) + f (x i −1 )
f (x )dx ≅ ∑ (x i − x i−1 )
xn
∫x0
i =1 2
EDO. (37)
f ( xi ) + f ( xi −1 )
(xi − xi −1 ) = ∆x ∑ [ f (xi ) + f (xi −1 )]
n n
∑
i =1 2 2 i =1
∆x n −1
f (x )dx ≅ ( ) ∑ f (x i ) +f (x n )
xn
∫x0
2
f x 0 + 2
i =1
EDO. (38)
∆x
∫ f (x )dx ≅ 3 [f (x ) + 4f (x ) + f (x )]
xc
a b c EDO. (39)
xa
∆x n −1 n −2
f (x )dx ≅ ( ) ( ) f (x i ) +f (x n )
xn
∫ f
0
3
x + 4 ∑ f x i + 2 ∑ EDO. (40)
x0
i =1, 3, 5 i = 2 , 4, 6
10.4.
10.4. Método de Romberg para integración
integración numérica de funciones
Definir la
función 'f',
precision,
xinicial, xfinal
Numerointervalos=1
I=0
diferencia=1000
∆x=(xinicial-xfinal)/Numerointervalos
Ianterior=I
I=0
n
∆x
I ≅∑ ( f (xi ) + f ( xi−1 ))
i =1 2
diferencia=(Ianterior-I) 2 SI
Numerointervalos=Numerointervalos+1
diferencia>precision
NO
FIN
11. RESUMEN
Tema 6: Ecuaciones diferenciales ordinarias e integración
12. Programación en
en Matlab®
Matlab®
function [x,y]=eulerex(funcion,x0,xf,y0,ninc)
function [x,y]=eulersist(F,x0,xf,y0,nint)
% Integra por el metodo de Euler explicito
% 'F' es el fichero con la funcion a integrar
% 'x0' es el punto inicial de calculo
% 'xf' es el punto final
% 'y0' es el valor de la funcion en x0
% 'nint' es el numero de incrementos
h=(xf-x0)/nint; % Paso de integracion
x(1)=x0;
y(:,1)=y0;
for i=1:nint
y(:,i+1)=y(:,i)+h*feval(F,x(i),y(:,i));
%Precaución: La función que contiene la ecuación diferencial debe contener como primera
% variable la variable dependiente ‘y’, y como segunda la ‘x’ para que funcione tal como se ha
% escrito. También se podría poner feval(funcion,x(i),y(:,i)) y habría que definir en la función
% primero la variable dependiente ‘x’.
x(i+1)=x(i)+h;
end
function [x,y]=heun(F,x0,xf,y0,nint)
% Integra por el metodo de HEUN
% 'F' es el fichero con la funcion a integrar
% 'x0' es el punto inicial de calculo
% 'xf' es el punto final
% 'y0' es el valor de la funcion en x0
% 'nint' es el numero de incrementos
h=(xf-x0)/nint; % Paso de integracion
x(1)=x0;
y(:,1)=y0;
for i=1:nint
f=feval(F,x(i),y(:,i));
y(:,i+1)=y(:,i)+h/2*(f+feval(F,x(i)+h,y(:,i)+h*f));
%Precaución: La función que contiene la ecuación diferencial debe contener como primera
% variable la variable dependiente ‘y’, y como segunda la ‘x’ para que funcione tal como se ha
% escrito. También se podría poner feval(funcion,x(i),y(:,i)) y habría que definir en la función
% primero la variable dependiente ‘x’.
x(i+1)=x(i)+h;
end
function [x,y]=eulercauchy(funcion,ptoinicial,ptofinal,condinicial,numincr)
h=(ptofinal-ptoinicial)/(numincr);
y(1)=condinicial;
x(1)=ptoinicial;
for i=1:numincr-1
x(i+1)=x(i)+h/2;
ynueva=y(i)+(h/2)*feval(funcion,y(i));
y(i+1)=y(i)+h*(feval(funcion,ynueva));
end
Tema 6: Ecuaciones diferenciales ordinarias e integración
function [x,y]=eulerimp(F,x0,xf,y0,nint)
% Integra por el metodo de Euler IMPLICITO
% 'F' es el fichero con la funcion MODIFICADA
% La función MODIFICADA es una función de Matlab que contiene la ecuación
% o sistema que debe igualarse a cero durante el método de Euler implícito
% 'x0' es el punto inicial de calculo
% 'xf' es el punto final
% 'y0' es el valor de la funcion en x0
% 'nint' es el numero de incrementos
global ysupuesto h xn % debe hacerse variables globales para traspasarla a la función
MODIFICADA
h=(xf-x0)/nint; % Paso de integracion
x(1)=x0;
y(1)=y0;
for i=1:nint
ysupuesto=y(i); % Valor supuesto de la solución
xn=x(i);
y(i+1)=fsolve(F,ysupuesto); %La solución viene dada cuando la función MODIFICADA se hace
cero
x(i+1)=x(i)+h;
end
function I=trapecios(X)
% Integra por el método de los trapecios
% Matriz X con valores [x f(x)]
% Disintos datos en distintas filas
[npuntos,nvar]=size(X); %numero de puntos y variables
x=X(:,1); %Valores de x
y=X(:,2); % Vlaores de la función
I=0;
for i=1:npuntos-1
I=I+(y(i)+y(i+1))/2*(x(i+1)-x(i));
end
function I=simpson(X,incrx)
% Integra por el método de simpson
% Matriz X con valores [x f(x)]
% Disintos datos en distintas filas
[npuntos,nvar]=size(X);
Cálculo numérico en Ingeniería
x=X(:,1);
y=X(:,2);
y0=y(1);
yn=y(npuntos);
sumapares=0;
sumaimpares=0;
for i=2:2:npuntos-1
sumaimpares=sumaimpares+ y(i);
end
for i=3:2:npuntos-2
sumapares=sumapares +y(i);
end
I=(incrx/3)*(y0+4*sumaimpares+2*sumapares+yn);
function I=romberg(F,x0,xn,precision)
% ‘F’ debe contener la forma analítica de la expresión a integrar
numerointerval=2;
I=0;
diferencia=100;
while diferencia>precision
incrx=(xn-x0)/numerointerval;
Integralanterior=I;
I=0;
x=x0:incrx:xn;
n=length(x);
for i=1:n-1
I=I+incrx/2*(feval(F,x(i))+feval(F,x(i+1)));
end
diferencia=(I-Integralanterior)^2;
numerointerval=numerointerval+2;
end