Curso de Métodos Numéricos. Ecuaciones diferenciales...
Transcript of Curso de Métodos Numéricos. Ecuaciones diferenciales...
Curso de M etodos Num ericos.Ecuaciones diferenciales ordinarias
Curso : Metodos Numericos en Ingenierıa
Profesor : Dr. Jose A. Otero Hernandez
Universidad : ITESM CEM
Fecha : Lunes, 11 de noviembre de 2014
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Topicos
1 Introducci on
2 Metodo de EulerEjemploError de truncamiento del metodo de Euler
3 Metodo de HeunEjemplo 2
4 Programa MATLAB
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Topicos
1 Introducci on
2 Metodo de EulerEjemploError de truncamiento del metodo de Euler
3 Metodo de HeunEjemplo 2
4 Programa MATLAB
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ecuaciones diferenciales ordinariasEn esta clase nos dedicaremos a la solucion de ecuacionesdiferenciales ordinarias de la forma:
dy
dx= f(x, y)
Anteriormente se utilizo un metodo numerico para resolver unaecuacion como la anterior (caso de la velocidad delparacaidista).En este caso se utilizo el metodo:Nuevo valor = valor anterior + pendiente × tamano
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ecuaciones diferenciales ordinariasEn esta clase nos dedicaremos a la solucion de ecuacionesdiferenciales ordinarias de la forma:
dy
dx= f(x, y)
Anteriormente se utilizo un metodo numerico para resolver unaecuacion como la anterior (caso de la velocidad delparacaidista).En este caso se utilizo el metodo:Nuevo valor = valor anterior + pendiente × tamano
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ecuaciones diferenciales ordinariasEn esta clase nos dedicaremos a la solucion de ecuacionesdiferenciales ordinarias de la forma:
dy
dx= f(x, y)
Anteriormente se utilizo un metodo numerico para resolver unaecuacion como la anterior (caso de la velocidad delparacaidista).En este caso se utilizo el metodo:Nuevo valor = valor anterior + pendiente × tamano
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ecuaciones diferenciales ordinariasMatematicamente:
yi+1 = yi + φh
φ es la pendiente estimada. La pendiente estimada seutiliza para extrapolar desde el valor anterior yi = y(xi) aun nuevo valor yi+1 = y(xi+1) a una distancia h.
Esta formula se aplica paso a paso para buscar los valoresde y posteriores.
Todos los metodos de un paso que se expresen de estaforma se diferencian solamente por la manera en la que seestime la pendiente.
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ecuaciones diferenciales ordinariasMatematicamente:
yi+1 = yi + φh
φ es la pendiente estimada. La pendiente estimada seutiliza para extrapolar desde el valor anterior yi = y(xi) aun nuevo valor yi+1 = y(xi+1) a una distancia h.
Esta formula se aplica paso a paso para buscar los valoresde y posteriores.
Todos los metodos de un paso que se expresen de estaforma se diferencian solamente por la manera en la que seestime la pendiente.
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ecuaciones diferenciales ordinariasMatematicamente:
yi+1 = yi + φh
φ es la pendiente estimada. La pendiente estimada seutiliza para extrapolar desde el valor anterior yi = y(xi) aun nuevo valor yi+1 = y(xi+1) a una distancia h.
Esta formula se aplica paso a paso para buscar los valoresde y posteriores.
Todos los metodos de un paso que se expresen de estaforma se diferencian solamente por la manera en la que seestime la pendiente.
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ecuaciones diferenciales ordinariasMatematicamente:
yi+1 = yi + φh
φ es la pendiente estimada. La pendiente estimada seutiliza para extrapolar desde el valor anterior yi = y(xi) aun nuevo valor yi+1 = y(xi+1) a una distancia h.
Esta formula se aplica paso a paso para buscar los valoresde y posteriores.
Todos los metodos de un paso que se expresen de estaforma se diferencian solamente por la manera en la que seestime la pendiente.
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Metodos de un paso
Metodo de Euler
Metodo de Heun
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Topicos
1 Introducci on
2 Metodo de EulerEjemploError de truncamiento del metodo de Euler
3 Metodo de HeunEjemplo 2
4 Programa MATLAB
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Metodo de EulerDada la ecuacion diferencial:
dy
dx= f(x, y)
Se puede encontrar la solucion como:
yi+1 = yi + f(xi, yi) h
Esta formula se conoce como metodo de Euler.
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Metodo de Euler
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ejemplo
Ejemplo
Con el metodo de Euler resuelva numericamente la ecuacion:
dy
dx= −2x3 + 12x2 − 20x + 8.5
desde x = 0 hasta x = 4 con un tamano de paso de 0.5. Lacondicion inicial en x = 0 es y = 1. Calcule el error relativoverdadero si se conoce que la solucion exacta es:
y = −0.5x4 + 4x3 − 10x2 + 8.5x + 1
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ejemplo
Soluci on ejemplo
c lear ; 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 exacto= 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 exacto ( x ( 1 ) ) ) / y exacto ( x ( 1 ) ) ∗100;fo r i =2:n
y ( i ) =y ( i −1)+ f ( x ( i −1) , y ( i −1) ) ∗h ;ev ( i ) =abs ( y ( i )−y exacto ( x ( i ) ) ) / y exacto ( x ( i ) ) ∗100;
ends a l i d a =[ x ’ y ’ ev ’ ] ;disp ( s a l i d a )ezp lo t ( y exacto , [ 0 , 4 , 0 , 7 . 5 ] ) ;hold onplo t ( x , y , ’ o ’ )
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ejemplo
Soluci on ejemplo
x y Er ro r0 1.0000 00.5000 5.2500 63.10681.0000 5.8750 95.83331.5000 5.1250 130.98592.0000 4.5000 125.00002.5000 4.7500 74.71263.0000 5.8750 46.87503.5000 7.1250 50.99344.0000 7.0000 133.3333
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ejemplo
Soluci on ejemplo
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ejemplo
Soluci on ejemplo
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Error de truncamiento del m etodo de Euler
Error de truncamientoSerie de Taylor
yi+1 = yi + y′ih +
y′′i
2!h2 + · · ·
donde h = xi+1 − xi. Pero y′i = f(xi, yi), entonces:
yi+1 = yi + f(xi, yi)h +f
′(xi, yi)2!
h2 + · · ·
Error de truncamiento
εt =f
′(xi, yi)2!
h2
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Error de truncamiento del m etodo de Euler
Error de truncamientoSerie de Taylor
yi+1 = yi + y′ih +
y′′i
2!h2 + · · ·
donde h = xi+1 − xi. Pero y′i = f(xi, yi), entonces:
yi+1 = yi + f(xi, yi)h +f
′(xi, yi)2!
h2 + · · ·
Error de truncamiento
εt =f
′(xi, yi)2!
h2
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Error de truncamiento del m etodo de Euler
Error de truncamientoSerie de Taylor
yi+1 = yi + y′ih +
y′′i
2!h2 + · · ·
donde h = xi+1 − xi. Pero y′i = f(xi, yi), entonces:
yi+1 = yi + f(xi, yi)h +f
′(xi, yi)2!
h2 + · · ·
Error de truncamiento
εt =f
′(xi, yi)2!
h2
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Error de truncamiento del m etodo de Euler
Soluci on ejemplo
c lear ; 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 exacto= i n l i n e ( ’−0.5∗x ˆ4+4∗xˆ3−10∗x ˆ2+8.5∗ x+1 ’ , ’ x ’ ) ;y ( 1 ) =1;fo r i =2:n
y ( i ) =y ( i −1)+ f ( x ( i −1) , y ( i −1) ) ∗h ;ev ( i ) =abs ( y ( i )−y exacto ( x ( i ) ) ) / y exacto ( x ( i ) ) ∗100;e t ( i ) =fD ( x ( i −1) , y ( i −1) ) /2∗h ˆ 2 ;
ends 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 on Metodo de Euler Metodo de Heun Programa MATLAB
Error de truncamiento del m etodo de Euler
Soluci on ejemplo con h = 0.5
x y ErrorVer ErrorTrun0.5000 5.2500 63.1068 −2.50001.0000 5.8750 95.8333 −1.18751.5000 5.1250 130.9859 −0.25002.0000 4.5000 125.0000 0.31252.5000 4.7500 74.7126 0.50003.0000 5.8750 46.8750 0.31253.5000 7.1250 50.9934 −0.25004.0000 7.0000 133.3333 −1.1875
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Error de truncamiento del m etodo de Euler
Soluci on ejemplo con h = 0.25
x y ErrorVer ErrorTrun0.2500 3.1250 22.0442 −0.62500.5000 4.1797 29.8544 −0.44920.7500 4.4922 36.9863 −0.29691.0000 4.3438 44.7917 −0.16801.2500 3.9688 53.1274 −0.06251.5000 3.5547 60.2113 0.01951.7500 3.2422 62.2678 0.07812.0000 3.1250 56.2500 0.11332.2500 3.2500 44.5699 0.12502.5000 3.6172 33.0460 0.11332.7500 4.1797 25.0731 0.07813.0000 4.8438 21.0938 0.01953.2500 5.4688 20.7417 −0.06253.5000 5.8672 24.3377 −0.16803.7500 5.8047 34.6624 −0.29694.0000 5.0000 66.6667 −0.4492
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Topicos
1 Introducci on
2 Metodo de EulerEjemploError de truncamiento del metodo de Euler
3 Metodo de HeunEjemplo 2
4 Programa MATLAB
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Metodo de HeunDada la ecuacion diferencial:
dy
dx= f(x, y)
Se puede encontrar la solucion como:
y0i+1 = yi + f(xi, yi) h
yi+1 = yi +f(xi, yi) + f(xi+1, y
0i+1)
2h
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Metodo de Heun
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ejemplo 2
Ejemplo 2
Con el metodo de Heun resuelva numericamente la ecuacion:
dy
dx= −2x3 + 12x2 − 20x + 8.5
desde x = 0 hasta x = 4 con un tamano de paso de 0.5. Lacondicion inicial en x = 0 es y = 1. Calcule el error relativoverdadero si se conoce que la solucion exacta es:
y = −0.5x4 + 4x3 − 10x2 + 8.5x + 1
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ejemplo 2
Soluci on ejemplo 2
c lear ; 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 exacto= 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 exacto ( x ( 1 ) ) ) / y exacto ( x ( 1 ) ) ∗100;fo 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 exacto ( x ( i ) ) ) / y exacto ( x ( i ) ) ∗100;
ends a l i d a =[ x ’ y ’ ev ’ ] ;disp ( s a l i d a )% ezp lo t ( y exacto , [ 0 , 4 , 0 , 7 . 5 ] ) ;% hold onplo t ( x , y , ’ ∗ ’ )
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ejemplo 2
Soluci on ejemplo 2
x y ErrorVerd0 1.0000 00.5000 3.4375 6.79611.0000 3.3750 12.50001.5000 2.6875 21.12682.0000 2.5000 25.00002.5000 3.1875 17.24143.0000 4.3750 9.37503.5000 4.9375 4.63584.0000 3.0000 0
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Ejemplo 2
Soluci on ejemplo 2
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Topicos
1 Introducci on
2 Metodo de EulerEjemploError de truncamiento del metodo de Euler
3 Metodo de HeunEjemplo 2
4 Programa MATLAB
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Metodo de Euler
funct ion edoeuler (F , x0 , xf , 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;
endy = y0∗ones ( n , 1 ) ;fo r i = 1 : n−1y ( i +1) = y ( i ) + f ( x ( i ) , y ( i ) ) ∗ ( x ( i +1)−x ( i ) ) ;endfD= i n l i n e ( d i f f ( sym(F) ) , ’ x ’ , ’ y ’ ) ;fo r i i =1:n
e t ( i i ) =fD ( x ( i i ) , y ( i i ) ) /2∗hˆ2ends a l i d a =[ x y et ’ ] ;disp ( s a l i d a )
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Soluci on ejemplo
x y0 1.00000.5000 5.25001.0000 5.87501.5000 5.12502.0000 4.50002.5000 4.75003.0000 5.87503.5000 7.12504.0000 7.0000
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Metodo de Heun
funct ion edoheun (F , x0 , xf , 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;
endy = y0∗ones ( n , 1 ) ;fo 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 ) ) ;ends a l i d a =[ x y ] ;disp ( s a l i d a )
Introducci on Metodo de Euler Metodo de Heun Programa MATLAB
Soluci on ejemplo
x y0 1.00000.5000 3.43751.0000 3.37501.5000 2.68752.0000 2.50002.5000 3.18753.0000 4.37503.5000 4.93754.0000 3.0000