Curso de Métodos Numéricos. Ecuaciones diferenciales ordinarias

Anuncio
Curso de Métodos Numéricos.
Ecuaciones diferenciales ordinarias
Curso: Métodos Numéricos en Ingenierı́a
Profesor: Dr. José A. Otero Hernández
Universidad: ITESM CEM
Fecha: Lunes, 11 de noviembre de 2014
Introducción
Método de Euler
Método de Heun
Tópicos
1
Introducción
2
Método de Euler
Ejemplo
Error de truncamiento del método de Euler
3
Método de Heun
Ejemplo 2
4
Programa MATLAB
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Tópicos
1
Introducción
2
Método de Euler
Ejemplo
Error de truncamiento del método de Euler
3
Método de Heun
Ejemplo 2
4
Programa MATLAB
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ecuaciones diferenciales ordinarias
En esta clase nos dedicaremos a la solución de ecuaciones
diferenciales ordinarias de la forma:
dy
= f (x, y)
dx
Anteriormente se utilizó un método numérico para resolver una
ecuación como la anterior (caso de la velocidad del
paracaidista).
En este caso se utilizo el método:
Nuevo valor = valor anterior + pendiente × tamaño
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ecuaciones diferenciales ordinarias
En esta clase nos dedicaremos a la solución de ecuaciones
diferenciales ordinarias de la forma:
dy
= f (x, y)
dx
Anteriormente se utilizó un método numérico para resolver una
ecuación como la anterior (caso de la velocidad del
paracaidista).
En este caso se utilizo el método:
Nuevo valor = valor anterior + pendiente × tamaño
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ecuaciones diferenciales ordinarias
En esta clase nos dedicaremos a la solución de ecuaciones
diferenciales ordinarias de la forma:
dy
= f (x, y)
dx
Anteriormente se utilizó un método numérico para resolver una
ecuación como la anterior (caso de la velocidad del
paracaidista).
En este caso se utilizo el método:
Nuevo valor = valor anterior + pendiente × tamaño
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ecuaciones diferenciales ordinarias
Matemáticamente:
yi+1 = yi + φh
φ es la pendiente estimada. La pendiente estimada se
utiliza para extrapolar desde el valor anterior yi = y(xi ) a
un nuevo valor yi+1 = y(xi+1 ) a una distancia h.
Esta fórmula se aplica paso a paso para buscar los valores
de y posteriores.
Todos los métodos de un paso que se expresen de esta
forma se diferencian solamente por la manera en la que se
estime la pendiente.
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ecuaciones diferenciales ordinarias
Matemáticamente:
yi+1 = yi + φh
φ es la pendiente estimada. La pendiente estimada se
utiliza para extrapolar desde el valor anterior yi = y(xi ) a
un nuevo valor yi+1 = y(xi+1 ) a una distancia h.
Esta fórmula se aplica paso a paso para buscar los valores
de y posteriores.
Todos los métodos de un paso que se expresen de esta
forma se diferencian solamente por la manera en la que se
estime la pendiente.
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ecuaciones diferenciales ordinarias
Matemáticamente:
yi+1 = yi + φh
φ es la pendiente estimada. La pendiente estimada se
utiliza para extrapolar desde el valor anterior yi = y(xi ) a
un nuevo valor yi+1 = y(xi+1 ) a una distancia h.
Esta fórmula se aplica paso a paso para buscar los valores
de y posteriores.
Todos los métodos de un paso que se expresen de esta
forma se diferencian solamente por la manera en la que se
estime la pendiente.
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ecuaciones diferenciales ordinarias
Matemáticamente:
yi+1 = yi + φh
φ es la pendiente estimada. La pendiente estimada se
utiliza para extrapolar desde el valor anterior yi = y(xi ) a
un nuevo valor yi+1 = y(xi+1 ) a una distancia h.
Esta fórmula se aplica paso a paso para buscar los valores
de y posteriores.
Todos los métodos de un paso que se expresen de esta
forma se diferencian solamente por la manera en la que se
estime la pendiente.
Introducción
Método de Euler
Métodos de un paso
Método de Euler
Método de Heun
Método de Heun
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Tópicos
1
Introducción
2
Método de Euler
Ejemplo
Error de truncamiento del método de Euler
3
Método de Heun
Ejemplo 2
4
Programa MATLAB
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Método de Euler
Dada la ecuación diferencial:
dy
= f (x, y)
dx
Se puede encontrar la solución como:
yi+1 = yi + f (xi , yi ) h
Esta fórmula se conoce como método de Euler.
Programa MATLAB
Introducción
Método de Euler
Método de Euler
Método de Heun
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ejemplo
Ejemplo
Con el método de Euler resuelva numéricamente la ecuación:
dy
= −2x3 + 12x2 − 20x + 8.5
dx
desde x = 0 hasta x = 4 con un tamaño de paso de 0.5. La
condición inicial en x = 0 es y = 1. Calcule el error relativo
verdadero si se conoce que la solución exacta es:
y = −0.5x4 + 4x3 − 10x2 + 8.5x + 1
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ejemplo
Solución ejemplo
clear ; clc ;
h=0.5;
x =[0:h : 4 ] ;
n=length ( x ) ;
f = i n l i n e ( ’−2∗x ˆ3+12∗ xˆ2−20∗x +8.5 ’ , ’ x ’ , ’ y ’ ) ;
y e x a c t o = i n l i n e ( ’ −0.5∗x ˆ4+4∗ xˆ3−10∗x ˆ 2 + 8 . 5 ∗ x+1 ’ , ’ x ’ ) ;
y ( 1 ) =1;
ev ( 1 ) =abs ( y ( 1 )−y e x a c t o ( x ( 1 ) ) ) / y e x a c t o ( x ( 1 ) ) ∗100;
f o r i =2: n
y ( i ) =y ( i −1)+ f ( x ( i −1) , y ( i −1) ) ∗h ;
ev ( i ) =abs ( y ( i )−y e x a c t o ( x ( i ) ) ) / y e x a c t o ( x ( i ) ) ∗100;
end
s a l i d a = [ x ’ y ’ ev ’ ] ;
disp ( s a l i d a )
e z p l o t ( y ex ac to , [ 0 , 4 , 0 , 7 . 5 ] ) ;
hold on
plot ( x , y , ’ o ’ )
Introducción
Método de Euler
Ejemplo
Solución ejemplo
x
0
0.5000
1.0000
1.5000
2.0000
2.5000
3.0000
3.5000
4.0000
y
1.0000
5.2500
5.8750
5.1250
4.5000
4.7500
5.8750
7.1250
7.0000
Error
0
63.1068
95.8333
130.9859
125.0000
74.7126
46.8750
50.9934
133.3333
Método de Heun
Programa MATLAB
Introducción
Método de Euler
Ejemplo
Solución ejemplo
Método de Heun
Programa MATLAB
Introducción
Método de Euler
Ejemplo
Solución ejemplo
Método de Heun
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Error de truncamiento del método de Euler
Error de truncamiento
Serie de Taylor
00
0
yi+1 = yi + yi h +
yi 2
h + ···
2!
0
donde h = xi+1 − xi . Pero yi = f (xi , yi ), entonces:
0
yi+1
f (xi , yi ) 2
= yi + f (xi , yi )h +
h + ···
2!
Error de truncamiento
0
εt =
f (xi , yi ) 2
h
2!
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Error de truncamiento del método de Euler
Error de truncamiento
Serie de Taylor
00
0
yi+1 = yi + yi h +
yi 2
h + ···
2!
0
donde h = xi+1 − xi . Pero yi = f (xi , yi ), entonces:
0
yi+1
f (xi , yi ) 2
= yi + f (xi , yi )h +
h + ···
2!
Error de truncamiento
0
εt =
f (xi , yi ) 2
h
2!
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Error de truncamiento del método de Euler
Error de truncamiento
Serie de Taylor
00
0
yi+1 = yi + yi h +
yi 2
h + ···
2!
0
donde h = xi+1 − xi . Pero yi = f (xi , yi ), entonces:
0
yi+1
f (xi , yi ) 2
= yi + f (xi , yi )h +
h + ···
2!
Error de truncamiento
0
εt =
f (xi , yi ) 2
h
2!
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Error de truncamiento del método de Euler
Solución ejemplo
clear ; clc ;
h=0.5;
x =[0:h : 4 ] ;
n=length ( x ) ;
f = i n l i n e ( ’−2∗x ˆ3+12∗ xˆ2−20∗x +8.5 ’ , ’ x ’ , ’ y ’ )
fD= i n l i n e ( d i f f ( sym ( ’−2∗x ˆ3+12∗ xˆ2−20∗x +8.5 ’ ) ) , ’ x ’ , ’ y ’ ) ;
y e x a c t o = i n l i n e ( ’ −0.5∗x ˆ4+4∗ xˆ3−10∗x ˆ 2 + 8 . 5 ∗ x+1 ’ , ’ x ’ ) ;
y ( 1 ) =1;
f o r i =2: n
y ( i ) =y ( i −1)+ f ( x ( i −1) , y ( i −1) ) ∗h ;
ev ( i ) =abs ( y ( i )−y e x a c t o ( x ( i ) ) ) / y e x a c t o ( x ( i ) ) ∗100;
e t ( i ) =fD ( x ( i −1) , y ( i −1) ) / 2 ∗ h ˆ 2 ;
end
s a l i d a = [ x ( 2 : n ) ’ y ( 2 : n ) ’ ev ( 2 : n ) ’ e t ( 2 : n ) ’ ] ;
disp ( s a l i d a )
Introducción
Método de Euler
Método de Heun
Error de truncamiento del método de Euler
Solución ejemplo con h = 0.5
x
0.5000
1.0000
1.5000
2.0000
2.5000
3.0000
3.5000
4.0000
y
5.2500
5.8750
5.1250
4.5000
4.7500
5.8750
7.1250
7.0000
ErrorVer
63.1068
95.8333
130.9859
125.0000
74.7126
46.8750
50.9934
133.3333
ErrorTrun
−2.5000
−1.1875
−0.2500
0.3125
0.5000
0.3125
−0.2500
−1.1875
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Error de truncamiento del método de Euler
Solución ejemplo con h = 0.25
x
0.2500
0.5000
0.7500
1.0000
1.2500
1.5000
1.7500
2.0000
2.2500
2.5000
2.7500
3.0000
3.2500
3.5000
3.7500
4.0000
y
3.1250
4.1797
4.4922
4.3438
3.9688
3.5547
3.2422
3.1250
3.2500
3.6172
4.1797
4.8438
5.4688
5.8672
5.8047
5.0000
ErrorVer
22.0442
29.8544
36.9863
44.7917
53.1274
60.2113
62.2678
56.2500
44.5699
33.0460
25.0731
21.0938
20.7417
24.3377
34.6624
66.6667
ErrorTrun
−0.6250
−0.4492
−0.2969
−0.1680
−0.0625
0.0195
0.0781
0.1133
0.1250
0.1133
0.0781
0.0195
−0.0625
−0.1680
−0.2969
−0.4492
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Tópicos
1
Introducción
2
Método de Euler
Ejemplo
Error de truncamiento del método de Euler
3
Método de Heun
Ejemplo 2
4
Programa MATLAB
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Método de Heun
Dada la ecuación diferencial:
dy
= f (x, y)
dx
Se puede encontrar la solución como:
0
yi+1
= yi + f (xi , yi ) h
yi+1 = yi +
0 )
f (xi , yi ) + f (xi+1 , yi+1
h
2
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Método de Heun
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ejemplo 2
Ejemplo 2
Con el método de Heun resuelva numéricamente la ecuación:
dy
= −2x3 + 12x2 − 20x + 8.5
dx
desde x = 0 hasta x = 4 con un tamaño de paso de 0.5. La
condición inicial en x = 0 es y = 1. Calcule el error relativo
verdadero si se conoce que la solución exacta es:
y = −0.5x4 + 4x3 − 10x2 + 8.5x + 1
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Ejemplo 2
Solución ejemplo 2
clear ; clc ;
h=0.5;
x =[0:h : 4 ] ;
n=length ( x ) ;
f = i n l i n e ( ’−2∗x ˆ3+12∗ xˆ2−20∗x +8.5 ’ , ’ x ’ , ’ y ’ ) ;
y e x a c t o = i n l i n e ( ’ −0.5∗x ˆ4+4∗ xˆ3−10∗x ˆ 2 + 8 . 5 ∗ x+1 ’ , ’ x ’ ) ;
y ( 1 ) =1;
ev ( 1 ) =abs ( y ( 1 )−y e x a c t o ( x ( 1 ) ) ) / y e x a c t o ( x ( 1 ) ) ∗100;
f o r i =2: n
y0 ( i ) =y ( i −1)+ f ( x ( i −1) , y ( i −1) ) ∗h ;
y ( i ) =y ( i −1) +( f ( x ( i −1) , y ( i −1) ) + f ( x ( i ) , y0 ( i ) ) ) / 2 ∗ h ;
ev ( i ) =abs ( y ( i )−y e x a c t o ( x ( i ) ) ) / y e x a c t o ( x ( i ) ) ∗100;
end
s a l i d a = [ x ’ y ’ ev ’ ] ;
disp ( s a l i d a )
% e z p l o t ( y ex ac to , [ 0 , 4 , 0 , 7 . 5 ] ) ;
% h o l d on
plot ( x , y , ’ ∗ ’ )
Introducción
Método de Euler
Ejemplo 2
Solución ejemplo 2
x
0
0.5000
1.0000
1.5000
2.0000
2.5000
3.0000
3.5000
4.0000
y
1.0000
3.4375
3.3750
2.6875
2.5000
3.1875
4.3750
4.9375
3.0000
ErrorVerd
0
6.7961
12.5000
21.1268
25.0000
17.2414
9.3750
4.6358
0
Método de Heun
Programa MATLAB
Introducción
Método de Euler
Ejemplo 2
Solución ejemplo 2
Método de Heun
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Tópicos
1
Introducción
2
Método de Euler
Ejemplo
Error de truncamiento del método de Euler
3
Método de Heun
Ejemplo 2
4
Programa MATLAB
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Método de Euler
function e d o e u l e r ( F , x0 , x f , y0 , h )
f= i n l i n e (F, ’ x ’ , ’ y ’ ) ;
x = [ x0 : h : x f ] ’ ; n = length ( x ) ;
i f x ( n )<x f
x ( n +1) = x f ;
n = n +1;
end
y = y0∗ones ( n , 1 ) ;
f o r i = 1 : n−1
y ( i +1) = y ( i ) + f ( x ( i ) , y ( i ) ) ∗ ( x ( i +1)−x ( i ) ) ;
end
fD= i n l i n e ( d i f f ( sym ( F ) ) , ’ x ’ , ’ y ’ ) ;
f o r i i =1: n
e t ( i i ) =fD ( x ( i i ) , y ( i i ) ) / 2 ∗ h ˆ 2
end
s a l i d a = [ x y et ’ ] ;
disp ( s a l i d a )
Programa MATLAB
Introducción
Método de Euler
Solución ejemplo
x
0
0.5000
1.0000
1.5000
2.0000
2.5000
3.0000
3.5000
4.0000
y
1.0000
5.2500
5.8750
5.1250
4.5000
4.7500
5.8750
7.1250
7.0000
Método de Heun
Programa MATLAB
Introducción
Método de Euler
Método de Heun
Programa MATLAB
Método de Heun
function edoheun ( F , x0 , x f , y0 , h )
f= i n l i n e (F, ’ x ’ , ’ y ’ ) ;
x = [ x0 : h : x f ] ’ ; n = length ( x ) ;
i f x ( n )<x f
x ( n +1) = x f ;
n = n +1;
end
y = y0∗ones ( n , 1 ) ;
f o r i = 1 : n−1
y00 ( i +1)=y ( i ) + f ( x ( i ) , y ( i ) ) ∗ ( x ( i +1)−x ( i ) ) ;
y ( i +1) = y ( i ) + ( f ( x ( i ) , y ( i ) ) + f ( x ( i +1) , y00 ( i +1) ) )
/ 2 ∗ ( x ( i +1)−x ( i ) ) ;
end
salida =[ x y ] ;
disp ( s a l i d a )
Introducción
Método de Euler
Solución ejemplo
x
0
0.5000
1.0000
1.5000
2.0000
2.5000
3.0000
3.5000
4.0000
y
1.0000
3.4375
3.3750
2.6875
2.5000
3.1875
4.3750
4.9375
3.0000
Método de Heun
Programa MATLAB
Descargar