Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
AUTOR
ANDRES COLLANTE HUANTO
LICENCIADO EN MATEMATICA
Indice
general
Resumen
IV
Introduccion
V
Parte
teorica
marco
teorico
Metodo de Euler
2
9
12
14
18
3. Metodos de Runge-Kutta
21
22
23
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
23
24
24
26
28
29
35
38
43
46
. . . . . . . . . . . . . .
53
. . . . . . . . . . . . . .
Fehlberg
4.3. Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
57
Materiales y Metodos
59
Resultados
60
Discusion
62
7. Bibliografa
64
66
66
69
B.1 Condicion de
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lipshitz
B.2 Teorema de Unicidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
ii
69
Indice de figuras
1.1. Linea poligonal de aproximacion dada por el metodo de
. . . . . .
Euler
1.2. Grafica para distintos tamanos de h, por el metodo de
. . . . . . .
Euler
1.3. Grafica de la velocidad versus tiempo del paracaidista . . . . . . . . . . .
29
32
33
35
36
37
42
5
7
34
36
. . . . . . . . . . . . . . . . . . . . . . . . . . .
49
67
iii
Resumen
Las ecuaciones diferenciales ordinarias
aumentan su complejidad
que modelan
en la medida
una
que se aproximen
realidad
cada
especfica,
vez mas
al
de computo elaborados
en Matlab, los que me permiten determinar las soluciones de las ecuaciones diferenciales
ordinarias de modo que el lector encuentre una herramienta para modelar sus propias
aplicaciones.
El trabajo de investigacion tiene como objetivo; elaborar un texto de Metodos Num
ericos para resolver Ecuaciones Diferenciales ordinarias con Matlab, en el que se
desarrollan los metodos numericos: De Euler, de Taylor de orden superior y RungeKutta.
La informacion de los temas tratados se obtuvieron de las referencias bibliogr
afi- cas
presentadas
de
las
paginas
de
iv
Introduccion
En
ingeniera hay
problema.
Cada
captulo consta
de una
coleccion de
Captulo 1
Metodo de Euler
Sea el problema de valor inicial
y = f (x, y) y(x0 ) = y0
(1.1)
supongamos que tiene una solucion unica (x) en un algun intervalo con centro
en x0 . Sea h > 0 y consideremos puntos igualmente espaciados
xn = x0 + nh
n = 0, 1, 2, ...
Los valores de la solucion (xn ) se pueden aproximar con yn , donde los valores de yn
se obtienen como sigue [KEN 92]:
En el punto (x0 , y0 ) la pendiente de la solucion de (1.1) es = f (x , y ). Por lo tanto,
0
0
dx
dy
(x3 ) y3 = y2 + hf (x2 , y2
)
5
(x2,y2)
4.5
pendiente
f(x2,y2)
pendiente
f(x1,y1)
(x3,y3)
4
(x1,y1)
pendiente
f(x3,y3)
3.5
pendiente
f(xo,yo)
2.5
10
(x4 ) y4 = y3 + hf (x3 , y3 )
etc
y se resume mediante
1.1.
(1.3)
n = 0, 1, 2, . . .
Algoritmo de Euler
Este algoritmo calcula la solucion del problema de valor inicial (1.1) en puntos
equidistantes x1 = x0 + h ,x2 = x0 + 2h, x3 = x0 + 3h, , xN = x0 + N h, aqu
f es tal que (1.1) tiene una solucion unica en [x0 , xN ].
1. Entrada: Valores iniciales x0 , y0 , tamano de paso h y numero de pasos N
2. Para n=0,...,N-1, hacer
1
Leonhard Euler, fue un matematico y fsico suizo. Se trata del principal matematico del siglo
XVIII
y uno de los mas grandes de todos los tiempos.
xn+1 = xn + h
yn+1 = yn + hf (xn , yn
) Salida xn+1 , yn+1
3. Parar
1.2.
Vamos a programar el metodo de Euler usando dos function llamadas euler y fe. La
funcion y=euler(n,a,b,h) tiene cuatro argumentos de entradas y un argumento de salida,
donde n es el numero de pasos, a=x0 , b=y(x0 ) y h el tamano de paso.
Programa euler.m
function y=euler(n,a,b,h)
format long
x=a:h:n*h;
y=zeros(n,1);
y(1)=b;
for k=1:n
f=fe(x(k),y(k));
y(k+1)=y(k)+h*f;
end
En la function fe se define la funcion f de (1.1)
Programa fe.m
function f=fe(x,y)
f=-y+x+2;%es la funcion del ejemplo 1
Ejemplo 1
Sea la ecuacion diferencial y = y + x + 2 con la condicion inicial y(0) = 2, usando
el metodo de Euler con h = 0.1, h = 0.05 y h = 0.01, aproximar y(1).
Solucion
Al usar el programa euler.m necesitamos hallar el valor de n, que lo podemos obtener de
n=
xN x0
h
1
= 20. Se digito >>euler(20, 0, 1, 0.05)
0
Para h = 0.01 tenemos n = 0.05 = 100. Se digito >>euler(10, 0, 1, 0.01)
1
0
0.01
Se obtuvo los siguientes valores
Para h = 0.05 tenemos n =
xn
yn
h=0.1
h=0.05
h=0.01
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
y = ex + x + 1
0.0 2.000000000000000
0.1 2.004837418035960
0.2 2.018730753077982
0.3 2.040818220681718
0.4 2.070320046035640
0.5 2.106530659712633
0.6 2.148811636094027
0.7 2.196585303791410
0.8 2.249328964117222
0.9 2.306569659740599
1.0 2.367879441171442
2.4
2.35
2.3
2.25
2.2
2.15
2.1
solucin exacta
h=0.1
h=0.05
h=0.01
2.05
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Ejemplo 2
Un paracaidista de masa M kg salta desde un avion en t = 0. Consideremos que la
velocidad vertical inicial del paracaidista es cero en t = 0 y que la cada es vertical.
Si el arrastre aerodinamico esta dado por Faire = cv 2 , donde c es una constante y v
es la velocidad vertical(positiva hacia abajo), asuma M = 70kg, c = 0.27kg/m y h =
0.1. Halle la velocidad del paracaidista para t 20s
Soluci
on
Por la primera ley de Newton, el equilibrio de fuerzas satisface
M
dv(t)
= Faire + gM
dt
(1.5)
dv(t)
c 2
=
v + g, v(0) = 0
M
dt
que es lo mismo a,
(1.6)
0.27 2
v + 9.8
70
Programa euler1.m
function [x y]=euler1(n,a,b,h)
%Resuelve el problema de paracaidista
format long
x=a:h:n*h;
y=zeros(n,1);
y(1)=b;
for k=1:n
f=fe1(x(k),y(k));
y(k+1)=y(k)+h*f;
end
plot(x,y)
grid
xlabel(tiempo(s));
ylabel(velocidad(m/s));
Programa fe1.m
function y1=fe1(x,y)
y1=(-0.27/70)*y^2+9.8;
Ejecutamos el programa
0.1 9.80000000e-001
0.2 1.95962956e+000
0.3 2.93814836e+000
0.4 3.91481860e+000
0.5 4.88890722e+000
.
19.5 5.03604023e+001
19.6 5.03621653e+001
19.6 5.03638597e+001
19.8 5.03654884e+001
19.9 5.03670537e+001
20.0 5.03685582e+001
60
50
velocidad(m/s)
40
30
20
10
0
0
10
tiempo(s)
12
14
16
18
20
Definicion 1.2.1. Se dice que una funcion f (t, y) satisface la condicion de Lipschitz
7
en
(t,
y)
y
L,
(t, y) D
observemos que L = 1
Teorema 1.2. Sea f continua y satisface la condicion de Lipschitz con la constante
L
en
D = {(t, y)/a t b, < y <
}
y que existe una constante M con la propiedad de que |y (t)| M t [a, b]
Si y(t) es la solucion unica del problema de valor inicial
y = f (t, y), a t b, y(a) =
9
y sean y0 , y1 , . . . , yn las aproximaciones generadas con el metodo de Euler para
algun entero positivo N, entonces
|y(ti ) yi |
hM L(ti a)
1]
[e
2L
1
0
i = 0, 1, 2, . . . , N
Ejemplo
Sea el problema de valor inicial
y = y + x + 2,
0 x 1,
2
y(0) =
y (x, y) = 1 = L,
(x, y) D
1.3.
(0.01)(1) (1)(xi 0)
[e
1]
2(1)
Problemas propuestos
y + ty = 1, y(0) = 1
b) y + 3y = et , y(0) = 1
c)
0.5 d )
y + y|y| = 0, y(0)
=1
e)
2. Use el metodo de Euler con h=0.1 para aproximar la solucion del problema de
valor inicial
y =
1
y
y2 ,
2
x
x
y(1) = 1
en el intervalo 1 x
2
3. Sea la ecuacion log
stica
dp
= ap bp2 p(0) = p0
dt
que se usa para modelar el crecimiento de poblaciones. Un modelo mas general
es la ecuacion
dp
= ap bpr
p(0) = p0
(1.7)
dt
donde r > 1. Para ver el efecto de cambiar el parametro r en (1.7), tome a =
3,
b = 1 y P0 = 1. Utilice ahora el metodo de Euler con h = 0.25 para aproximar
la solucion de (1.7) en el intervalo 0 t 5 para r = 1.5, 2 y 3
dv
= mg kv v(0) = v0
dt
dv
= mg kv r
dt
v(0) = v0
(1.8)
g =
Un tanque conico contiene agua hasta una altura de 0.5m desde el fondo. El
tanque tiene un agujero de 0.02m de radio en el fondo. El radio del esta dado por r
= 0.25y, donde r es el radio e y es la altura medida desde el fondo. La velocidad
del agua que sale por el agujero esta dada por v 2 = 2gy, donde g = 9.8 m/s2 . Con
h=0.001, utilice el metodo de Euler para averiguar cuantos minutos tardara
el tanque en vaciarse.
8. Una pieza metalica con una masa de 0.1kg y 25o C se calienta internamente
de forma electrica a razon de q=3000W. La ecuacion diferencial de la
temperatura
que se obtiene es:
dT
= 20 t2 , si T (0) = 298
dt
Calcule T (1) empleando el metodo de Euler con h=0.01
9. La ley de Newton del enfriamiento establece que la razon de cambio de la
temperatura T (t) es proporcional a la diferencia entre la temperatura del medio
M (t) y la temperatura del cuerpo. Esto es
dT
dt
= K [M (t) T
(t)]
1 minuto
b) 2 minutos
10.
= K (M 4 T
4
)
donde K es una constante. Sea K = 404 y suponga que la temperatura del medio
es constante, M (t) = 70. Si T (0) = 100, use el metodo de Euler con h = 0.1
para aproximar T (1) y T (2).
Captulo 2
Metodos de Taylor de orden
superior
Sea el problema de valor inicial
y = f (x, y) y(x0 ) = y0
(2.1)
supongamos que tiene solucion unica (x) en un algun intervalo con centro en x0
. Sea
h > 0 y consideremos puntos igualmente espaciados
xn = x0 + nh n = 0, 1, 2,
...
Consideremos que la solucion (x) tiene n + 1 derivadas continuas. Si se desarrolla
la solucion (x) en funcion del enesimo polinomio de Taylor alrededor de xn y
calculamos en xn+1 obtendremos
hn (n)
hn+1
h2
(x
)
+
(x
)
+
(x n+1 ) = (x n ) + h (xn ) + n
n
n
2
(n + 1)!
(n+1)
(n )
h2
f (xn , (xn
(xn+1 ) = (xn ) + hf (xn , (xn ))
))
+
n+1
2
n
h
+ h
f (n) (n, (n)) (2.2)
(n1) n, (xn)) +
(n
+
1)!
f
(x
n!
haciendo (x0 ) = y0
(x1 ) y1 = y0 + hf (x0 , y0 )
+
(x2 ) y2 = y1 + hf (x1 , y1 )
+
h2
hn
f (x0 , y0 ) + +
f
2
n!
h2
hn
f (x1 , y1 ) + +
f
2
n!
(n1)
(x0 , y0 )
(n1)
(x1 , y1 )
h2
hn
f (x2 , y2 ) + + (n1) (x2 , y2 ),
(x3 ) y3 = y2 + hf (x2 , y2 )
f
+
2
n!
Este procedimiento se llama Metodo de Taylor de orden p y se resume
mediante las siguientes formulas recursivas
xn+1 = xn + h
(2.3)
h2
hp
f (xn , yn ) + + (p1) (xn , yn )
f
(2.4)
2
p!
Si p = 1, el metodo de taylor de orden 1 es el metodo de Euler
yn+1 = yn + hf (xn , yn )
+
yn+1 = yn + hf (xn , yn ),
n = 0, 1, 2, . . .
n = 0, 1, 2, . . .
h2
f (xn , yn )
2
n = 0, 1, 2, . . .
h2
h3
f (xn , yn ) +
f
2
3!
(2)
(x2 , y2 )
n = 0, 1, 2, . . . ,
n = 0, 1, 2, . . .
2
h2
f (xn , yn ) +
T (p) (xn , yn ) = f (xn , yn )
+
+
p!
h
f (p
etc
1)
(xn , yn )
(2.6)
2.1.
Este algoritmo calcula la solucion del problema de valor inicial (1.1) en puntos
equidistantes x1 = x0 + h, x2 = x0 + 2h, x3 = x0 + 3h, , xN = x0 + N h, aqu
f es tal que (1.1) tiene una solucion unica en [x0 , xN ].
1. Entrada: Valores iniciales x0 ,
.
(n)
(xn ) = f
(n
1)
(xn , (xn ))
h
h
yn+1 = yn + h (xn ) + 2 (xn ) + h3 (x
n)
(n) (x )
n
n
3. Parar
Ejemplos
1. Determine las formulas recursivas del metodo de Taylor de orden 2 para el
problema
de valor inicial
y = exy
Soluci
on
y(0) = 1
h2
yn+1 = yn + hy (xn ) + y (xn )
2!
2
h f
f
= yn + hf (xn , yn ) +
(xn , yn ) +
(xn , yn )f (xn , yn )
x
y
yn+1
2!
observar que
f (x, y) = exy
x0 = 0 y0 = 1 f
ormulas
recursivas
xn
= xn + h
h2
+
yn e(xn ,yn ) + xn e(xn ,yn ) e(xn ,yn )
2!
1
Program fe.m
function y1=fe(x,y)
y1=cos(x)-sin(y)+x^2;
Ejecutamos el programa
>> taylor(10,-1,3,0.1)
donde n = 10 es el numero de intervalos de longitud h = 0.1, como la condici
on inicial es y(1) = 3 entonces a = 1 y b = 3
ans =
xn
yn
-1.0
3.000000000000000
-0.9
3.141523798815666
-0.8
3.287216794698704
-0.7
3.438764055326533
-0.6
3.597569817751085
-0.5
3.764637981583152
-0.4
3.940425688412236
-0.3
4.124693336379560
-0.2
4.316391269699142
-0.1
4.513637715380874
0.0
4.713841791853081
dI
I
+
= (0.06)e0.06t sin(2t ) + 2e0.06t cos(2t )
dt 1.1
despejando
dI
I
=
dt
(1.1)(2.1)
0.06 0.06t
2
e
sin(2t ) + e0.06t cos(2t )
2.1
2.1
16
16
function y=taylor3(n,a,b,h)
17
17
format long
x=a:h:n*h;
y=zeros(n,1);
y(1)=b;
for k=1:n y1=fl(x(k),y(k));
r1=(((0.06^2)*(pi^2)/2.1)-4/2.1);
r2=4*(-0.06*pi/2.1);
r3=(-1/(2.1*1.1));
y2=r1*exp(-0.06*pi*x(k)).*sin(2*x(k)-pi)+...
r2*exp(-0.06*pi*x(k)).*cos(2*x(k)-pi)+r3*y1;
y3=(-0.06*pi*r1-2*r2)*exp(-0.06*pi*x(k)).*sin(2*x(k)-pi)+...
(2*r1-0.06*pi*r2)*exp(-0.06*pi*x(k)).*cos(2*x(k)-pi)+r3*y2;
y(k+1)=y(k)+h*(y1+(h/2)*(y2+(h/3)*(y3)));
end
Programa fl.m
function y1=fl(x,y)
y1=(-y/(2.1*1.1))+(-0.06*pi/2.1)*exp(-0.06*pi*x)*sin(2*x-pi)+...
(2/2.1)*exp(-0.06*pi*x)*cos(2*x-pi);
Ejecutamos el programa
>> taylor3(10,0,1,0.2)
ans =
tn
In
1.000000000000000
0.2
0.746508916487780
0.4
0.552980151519051
0.6
0.431802748271490
0.8
0.384440494683400
1.0
0.401911779693576
1.2
0.466844369290315
17
17
1.4
0.556674895401674
1.6
0.647418540098737
1.8
0.717388697783574
2.0
0.750299158260995
2.2.
Problemas propuestos
y = cos(x + y) y(0) =
b) y = xy y 2
2.
y(0) = 1
use los metodos de Taylor de orden 2 y 4 con h=0.25 para aproximar la soluci
on al problema de valor inicial en x=1, compare estas aproximaciones con la soluci
on verdadera
a)
0 t 2,
y(0) =
0
5. Dado el problema de valor inicial
y = y + 2xex+x y(0) = 0, 0 x
1
2
ex
18
18
a)
19
19
3t x + x2
x(1) = 2
x = 3
2t + 3tx
mediante el metodo de Taylor de orden 2 en el intervalo [0,1] con
pasos
h = 0.01.
t
12
0.0114T
y
y =
x + y2
dx
dt
2
+ 0.6x = 0
Si el resorte se suelta desde un punto que esta a una unidad de distancia por
arriba de su punto de equilibrio,x(0), x (0) = 0. Determine x(2) empleando el m
etodo de Taylor de orden tres con h = 0.1
20
20
Captulo 3
Metodos de Runge-Kutta
En la seccion anterior vimos los metodos de Taylor que tienen un error de
truncamiento de orden alto, pero tienen la desventaja de requerir el calculo y evaluacion
de las derivadas de f (x, y), este es un procedimiento lento y complicado motivo por el
cual rara vez se emplean. Los metodos de Runge1 Kutta2 tienen error de truncamiento
alto, pero permiten prescindir del calculo y evaluacion de las derivadas.
El primer paso para derivar el Metodo de Runge-Kutta ([BUR 02]), es determinar
los valores a,b y c con la propiedad de que af (x + b, y + c) aproxima a (2.6) para p = 2
T (2) (x, y) = f (x, y) +
h f
2 x
h
2
(x, y) +
f (x, y)
h f
2 y
,
)
+
bc
(
,
)
(, )
R1 (x + b, y + c)
2 x2
xy
2 y 2
=
+
para entre x y x + b, entre y y y + c
Al igualar los coeficientes de las ecuaciones (3.1) y (3.2) obtenemos a = 1 b =
1
h
2
Carle David Tolme Runge(30 de agosto de 1856-3 de enero de 1927) fue un matematico, f
atico aleman.
c=
h
f
2
(x, y)
En consecuencia
T
(2)
(x, y) = f
x+
,y+
f (x, y)
h
h
x + , y + f (x, y)
donde
h
R1 (x +
=
h2 2 f
2
2 f
2 f
2
h
(, ) + f (x, y)
(, )
(, ) + (f (x, y))
2
8 x
4
xy
8
y 2
h
,y+
f (x, y))
h2
,y+
f (x, y) en el metodo
3.1.
h
h
, yn + f (xn , yn ))
2
2
n = 0, 1, 2, . . .
(3.4)
(3)
(x, y) = f (x, y) +
f (x, y) +
2
6
f (x, y)
es
af (x, y) + bf (x + c, y + df (x, y))
(3.5)
y ni siquiera con esto se tiene la suficiente flexibilidad para igualar el termino
2
h2 f
(x, y) f (x, y)
6 y
resultante de la expansion
h2
de
f (x, y)
Por lo tanto, lo mejor que podemos lograr utilizando son metodos con el error
local de truncamiento O(h2 ), sin embargo el hecho que tenga cuatro parametros, da
cierta
flexibilidad en su eleccion para derivar varios metodos O(h2 ). Uno de los mas
importantes
es el metodo modificado de Euler, que corresponde a seleccionar a = b = y c = d = h
2
1
y se representa de la siguiente forma.
3.2.
3.3.
Metodo de Heun
1
2
2
yn+1 = yn + h f (xn , yn ) + 3f (xn + h, yn + hf (xn ,
4
3
3
yn ))
n = 0, 1, 2, . .
.
(3.7)
Ambos son metodos de Runge Kutta de orden dos, que es el orden de su error local
de truncamiento.
Aunque podemos aproximar T (3) (x, y) con el error O(h3 ) mediante una expresion de
la
forma
f (x + a, y + df (x + b, y + cf (x, y)))
contiene cuatro parametros, determinar los valores de a b c y d es complicada, de
hecho el metodo de Runge Kutta de orden tres que resulta de esta expresion no se
emplea. El metodo de Runge Kutta de mayor uso es el de cuarto orden
3.4.
Orden
donde
Metodo
de Runge-Kutta
1
yn+1 = yn + (k1 + 2k2 + 2k3 + k4 ) ,
6
(3.8)
k1 = hf (xn , yn
)
1
de Cuarto
n = 0, 1, 2, . . .
k2 = hf (xn +
k3
k4
h, yn + k1 )
2
2
1
1
= hf (xn + h, yn + k2 )
2
2
= hf (xn + h, yn + k3 )
1
6
function y1=fe(x,y)
y1=x*exp(3*x)-2*y;
Ejemplo
1. Sea la ecuacion diferencial y = xe3x 2y, y(0) = 0, cuya solucion general es
y(x) =
0.1,
xe3t
e3t +
25
25
aproximar y(1)
Solucion
Utilizando el metodo de Runge-kutta se consigue los siguientes valores
Metodo
xn
Valor exacto
Runge-Kutta
y(xn )
yn
Error
|y(xn ) yn |
1.0e-003 *
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
a y(1)
Solucion exacta
y(1)
Error
|y(1)-Aprox|
0.1
2.367879774412498
2.367879441171442
3.332410560830112e-007
0.05
2.367879461147540
2.367879441171442
1.997609810899803e-008
0.01
2.367879441202356
2.367879441171442
3.091393807608256e-011
Euler h=0.1
euler h=0.025
Runge kutta
solucion exacta
4to orden
0
2.000000000000000
2.000000000000000
2.0000000000000000
2.0000000000000000
0.1
2.000000000000000
2.003687890625000
2.0048374999999998
2.0048374180359598
0.2
2.010000000000000
2.016651803662262
2.0187309014062498
2.0187307530779819
0.3
2.029000000000000
2.037998345826651
2.0408184220011774
2.0408182206817180
0.4
2.056100000000000
2.066920168424825
2.0703202889174905
2.0703200460356395
0.5
2.090490000000000
2.102687680219100
2.1065309344233798
2.1065306597126332
0.6
2.131441000000000
2.144641558442873
2.1488119343763148
2.1488116360940266
0.7
2.178296900000000
2.192185981095952
2.1965856186712287
2.1965853037914096
0.8
2.230467210000001
2.244782511051797
2.2493292897344279
2.2493289641172218
0.9
2.287420489000001
2.301944569199290
2.3065699912000754
2.3065696597405991
1.0
2.348678440100001
2.363232439887880
2.3678797744124984
2.3678794411714423
para
llegar
y(1)
= f 1 (x, u 1, u2 , . . . , um )
= f (x, u , u , . . . ,
u
2
1
2
(3.9)
.
dum
= fm (x, u 1 , u2 , . . . , um )
dx
para a x b con las condiciones iniciales
u1 (a) = 1 , u2 (a) = 2 , . . . , um (a) = m
(3.10) El objetivo es hallar m funciones u1 , u2 , . . . , um que satisfagan el sistema de
ecuaciones
y(a) = y0 ,
a x b
1
(k1 + 2k2 + 2k3 + k4 )
6
(3.12)
donde
k1 = hf (xn , yn
)
1
1
k2 = hf (xn + h, yn + k1 )
2
2
1
1
k3 = hf (xn + h, yn + k2 )
2
2
k4 = hf (xn + h, yn + k3 )
b a
donde n = 0, 1, . . . , N y h =
N
que
se
calcularon
y1,j ,
y2,j ,
. . . , ym,j ,
1
(k1,j + k2,j + k3,j + k4,j )
6
donde
Para cada i = 1, 2, . . . , m
k1,j = hfi (xj , y1,j , y2,j , . . . , ym,j )
enseguida
obtenemos
Para cada i = 1, 2, . . . , m
k2,j = hfi (xj +
1
1
1
1
h, y1,j + k1,1 , y2,j + k1,2 , . . . , ym,j + k1,m )
2
2
2
2
Para cada i = 1, 2, . . . , m
1
1
1
1
k3,j = hfi (xj + h, y1,j + k2,1 , y2,j + k2,2 , . . . , ym,j +
2
2
2
2
k2,m )
Para cada i = 1, 2, . . . , m
k4,j = hfi (xj + h, y1,j + k3,1 , y2,j + k3,2 , . . . , ym,j +
k3,m )
3.5.1.
= fj (x, u1 , u2 , . . . , um )
uj (a) = j
a x
b a
;x=a
N
1
1
1
1
h, y1,j + k1,1 , y2,j + k1,2 , . . . , ym,j + k1,m )
2
2
2
2
c. Para j = 1, 2, . . . , m hacer
1
1
1
1
k3,j = hfi (xj + h, y1,j + k2,1 , y2,j + k2,2 , . . . , ym,j +
2
2
2
2
k2,m )
d. Para j = 1, 2, . . . , m hacer
k4,j = hfi (xj + h, y1,j + k3,1 , y2,j + k3,2 , . . . , ym,j +
k3,m )
e. Para j = 1, 2, . . . , m hacer
yi,j+1 = yi,j +
1
(k1,j + k2,j + k3,j + k4,j )
6
f. Para j = 1, 2, . . . , m
hacer g. x1 = a + ih.
4. Salida (xi , y1,j , y2,j , . . . , ym,j ).
5. Parar.
3.5.2.
Se tiene una carga de masa m colocada en una banda transportadora[BAE 06] que
tiene una velocidad v0 . Esta carga esta asociada a un sistema resorte amortiguador
como se muestra en la figura (3.1). Para determinar el desplazamiento de la masa M
a una velocidad dada, primero hacemos el diagrama de cuerpo libre de la masa M .
y
n
x
F1
M
k
mg
F
F2
N
v0
Figura 3.1: Sistema de banda transportadora
F1 = kx
F2 = nx
N = mg
La ecuacion de movimiento de la masa es
mx = F F1 F2
mx = F kx nx
x ) + c(v0 x )3 ]
(3.13)
k
N [1 b(v0 x2 ) + c(v0 x2 ) ]
x2 = x1 x2
m
m
nm
+
3
(3.14)
Los datos del problema son b = 0.3, c = 0.1, m = 1kg,g = 9.8m/s2 , u = 0.6,
k = 1600N/m, n = 0.1kg/s
Programa banda.m
function y=banda(r)
%Programa que determina el desplazamiento de una banda transportadora
clc;global v0;v0=r;
format long
a=0;
b=8;
m=2; %numero de ecuaciones
N=1000; %numero de subintervalos
c(1)=0;%condiciones iniciales
c(2)=0;
30
30
h=(b-a)/N;
t=a;
for j=1:m,
31
31
w(j)=c(j)
end
T=[t];
y=[w];
for i=1:N,
for j=1:m,
k1(j)=h*fs(t,w(1),w(2),j);
end
for j=1:m,
k2(j)=h*fs(t+h/2,w(1)+(1/2)*k1(1),w(2)+(1/2)*k1(2),j);
end
for j=1:m,
k3(j)=h*fs(t+h/2,w(1)+(1/2)*k2(1),w(2)+(1/2)*k2(2),j);
end
for j=1:m,
k4(j)=h*fs(t+h,w(1)+k3(1),w(2)+k3(2),j);
end
for j=1:m, w(j)=w(j)+(k1(j)+2*k2(j)+2*k3(j)
+k4(j))/6
end t=a+i*h;
T=[T;t];
y=[y;w]
input(pulse)
fprintf(%4.4f
,T(i+1));
fprintf(%12.6i
,w(1));fprintf(%12.6i\n,w(2));
end
plot(T,y(:,1))
xlabel(tiempo (s));
ylabel(posicion (m));
grid
Programa fs.m
function y1=fs(t,x1,x2,j)
31
31
b=0.3;c=0.1;m=1;g=9.8;k=1600;n=0.1;u=0.6;N=m*g;v0=0.5;
if j==1,
y1=x2;
end
if j==2,
y1=(-k/m)*x1-(n/m)*x2+(u*N)*(1-b*(v0-x2)+c*(v0-x2)^3)/m;
end
Se realiza tres simulaciones para v0 = 0.5m/s y v0 = 1m/s tenemos las figuras (3.2)
y (3.3) donde el sistema es inestable, para v0 = 1.5m/s el sistema es estable segun la
figura (3.4).
0.05
0.04
0.03
posicion (m)
0.02
0.01
0
0.01
0.02
0.03
velocidad v0=0.5 m/s
0.04
0
4
tiempo (s)
x 10
posicion (m)
0
0
4
tiempo (s)
Y =
u1
u2
,
.
un
(3.15)
1
f
f
2
f =
.
fn
(3.16)
Y = MY + F
x 10
posicion (m)
1
0
0
4
tiempo (s)
K1
K2 = h M (Yn + ) + F
2
K2
K3 = h M (Yn + ) + F
2
K4 = h [M (Yn + K3 ) + F
]
1
Yn+1 = Yn + (K1 + 2K2 + 2K3 + K4 )
6
(3.17)
3.5.3.
Este algoritmo calcula la solucion del problema de valor inicial (1.1) en puntos
equidistantes x1 = x0 + h ,x2 = x0 + 2h, x3 = x0 + 3h, , xN = x0 + N h, aqu
f es tal que (1.1) tiene una solucion unica en [x0 , xN ].
1. Define: La matriz M , F y la matriz que contiene las condiciones iniciales Y (a)
K2 = h M (Yn + 2K1 ) + F
K3 = h M (Yn + 2K2 ) + F
K4 = h [M (Yn + K3 ) + F ]
Yn+1 = Yn + 61 (K1 + 2K2 + 2K3 +
K4 ) Salida xn+1 , Yn+1
3. Parar
3.5.4.
La figura 3.5 muestra un monorriel de dos carros[ROJ 01]. Sean M1 la masa del
carro de maquinas y B1 sus fricciones debido al aire y al rodamiento. La fuerza lineal
equivalente para mover el proceso se designa como u(t). Los dos carros poseen masas
M2 y M3 respectivamente, y estan sujeto a fricciones B2 y B3 . Los carros se acoplan
uno al otro con dispositivos no rgidos(resortes) que poseen constantes k23 y k12 y
dispositivos amortiguadores de constantes B23 y B12 . Las coordenadas de posicion se
designan como x1 , x2 y x3 . Para determinar los desplazamientos y velocidades de M1 ,
M2 y M3 en el intervalo de tiempo [0, 3], hacemos el diagrama de cuerpo libre a cada
masa.
x3
x2
=
B23
x +
x 3
x
+
k
M23
2
3
M
2
37
37
M1 x1
=
x 2 = z2 ,
,
x3 = u1
x 1
=
x1
=
x 2
=
x2
=
y1
(3.21)
k12
B12
(B + B1 )
u(t
y =
y1 12
z
+
y
+
z
+
2
2
1
)
k12
M
M1
M1
1
M1
1
z1
M
2
z =
2
x3
=
(3.23)
B12
k23
(k + k23 )
(B + B12 + B2 )
k12
y2 12
z1 23
u (3.24)
y1 +
z2 +
M2 1
M2
M2
M2
M2
B23
u
M2 2
u 1 = u2
(3.26)
B23
k23
(B + B3 )
u M=
u 23
u2
2
k23 z + 3 z 2 M3 1
M3
1
M
3
+
x 3
=
(3.22)
(3.25)
(3.27)
Y = AY + F
(3.28)
donde
Y =
y
1
y 2
z1
z2
u 1
2
u
M =
k12
M1
(B
12
+B
1
M1
k12
B12
M1
M1
k12
B12
(k12 +k23
)
M2
M2
k23
B23
M
M22
M3
M3
y
y2
z1
Y =
z
2
u1
u2
0
u(t)
M1
0
F =
0
0
0
3.5.5.
Programa monorriel.m
%Halla los desplazamientos y velocidades
%de cada masa del monorriel de dos carros
clear;
clc;
k23
M2
B
M23
2
k23
(B
+B )
23
M3
M3
format long
M2=2600;M3=2600;M1=1300;
K23=100000;K12=100000;
B2=10000;B3=10000;B1=5000;
B23=500;B12=500;
M=[0 1 0 0 0 0;
-K12/M1 -(B12+B1)/M1 K12/M1 B12/M1 0 0;
0 0 0 1 0 0;
K12/M2 B12/M2 -(K12+K23)/M2 -(B23+B12+B2)/M2 K23/M2 B23/M2;
0 0 0 0 0 1;
0 0 K23/M3 B23/M3 -K23/M3 -(B23+B3)/M3];
Y(:,1)=[0;0;0;0;0;0];
h=0.1;n=1;t(1)=0;U=1300;F=[0;U/M1;0;0;0;0];
while t(n)<3
k1=h*F4(Y(:,n),M,F); k2=h*F4(Y(:,n)
+k1/2,M,F); k3=h*F4(Y(:,n)+k2/2,M,F);
k4=h*F4(Y(:,n)+k3,M,F); Y(:,n+1)=Y(:,n)
+(1/6)*(k1+2*k2+2*k3+k4); t(n+1)=n*h;
n=n+1;
F=[0;U/M1;0;0;0;0];
end subplot(2,1,1)
plot(t,Y(1:2:6,:));
legend(posicion M1,posicion M2,posicion M3)
text(t(3),Y(1,3),x1);
text(t(5),Y(3,5),x2);
text(t(7),Y(5,7),x3);
xlabel(tiempo (s));
ylabel(desplazamientos x1,x2,x3 (m));
grid;
subplot(2,1,2);
plot(t,Y(2:2:6,:));
legend(velocidad M1,velocidad M2,velocidad M3)
text(t(3),Y(2,3),v1);
text(t(3),Y(4,3),v2);
text(t(3),Y(6,3),v3);
39
39
xlabel(tiempo (s));
ylabel(velocidades(m/s));
grid;
for i=1:1:length(Y)
fprintf(%i
,i-1);fprintf(%4.1f
fprintf(%8.4i
,t(i));
,Y(1,i));fprintf(%8.4i
,Y(3,i));
fprintf(%8.4i\n,Y(5,i));
end
for i=1:1:length(Y)
fprintf(%i
,i-1);fprintf(%4.1f
fprintf(%8.4i
,t(i));
,Y(2,i));fprintf(%8.4i
,Y(4,i));
fprintf(%8.4i\n,Y(6,i));
end
Los desplazamientos de cada masa es
n
ti
x1
x2
x3
0.0
0000
0.1
4.0492e-003
1.8553e-004
1.5409e-007
0.2
1.2129e-002
1.7013e-003
9.8981e-005
0.3
1.9227e-002
5.4582e-003
7.9289e-004
0.4
2.3799e-002
1.0704e-002
2.8566e-003
0.5
2.7024e-002
1.5859e-002
6.7719e-003
0.6
3.0385e-002
2.0116e-002
1.2256e-002
0.7
3.4343e-002
2.3911e-002
1.8408e-002
0.8
3.8664e-002
2.8111e-002
2.4317e-002
0.9
4.3220e-002
3.3079e-002
2.9572e-002
0000
0000
10
1.0
4.8187e-002
3.8519e-002
3.4310e-002
11
1.1
5.3675e-002
4.3951e-002
3.8904e-002
12
1.2
5.9448e-002
4.9165e-002
4.3646e-002
13
1.3
6.5079e-002
5.4258e-002
4.8631e-002
14
1.4
7.0314e-002
5.9382e-002
5.3816e-002
15
1.5
7.5231e-002
6.4570e-002
5.9120e-002
16
1.6
8.0093e-002
6.9759e-002
6.4467e-002
17
1.7
8.5104e-002
7.4906e-002
6.9790e-002
18
1.8
9.0293e-002
8.0042e-002
7.5045e-002
40
19
1.9
9.5572e-002
8.5217e-002
8.0219e-002
20
2.0
1.0085e-001
9.0446e-002
8.5342e-002
21
2.1
1.0611e-001
9.5694e-002
9.0463e-002
22
2.2
1.1134e-001
1.0092e-001
9.5620e-002
23
2.3
1.1654e-001
1.0611e-001
1.0082e-001
24
2.4
1.2173e-001
1.1129e-001
1.0605e-001
25
2.5
1.2690e-001
1.1647e-001
1.1128e-001
26
2.6
1.3206e-001
1.2167e-001
1.1650e-001
27
2.7
1.3725e-001
1.2687e-001
1.2170e-001
28
2.8
1.4245e-001
1.3208e-001
1.2690e-001
29
2.9
1.4767e-001
1.3728e-001
1.3209e-001
30
3.0
1.5289e-001
1.4248e-001
1.3728e-001
ti
v1
v2
v3
0.0
0000
0.1
7.1537e-002
5.6644e-003
6.5875e-005
0.2
8.2148e-002
2.5876e-002
2.8002e-003
0.3
5.7895e-002
4.7570e-002
1.2466e-002
0.4
3.5742e-002
5.4615e-002
2.9591e-002
0.5
3.0991e-002
4.7360e-002
4.8135e-002
0.6
3.6715e-002
3.8728e-002
5.9973e-002
0.7
4.2010e-002
3.8617e-002
6.1568e-002
0.8
4.4325e-002
4.5838e-002
5.6002e-002
0.9
4.7184e-002
5.2941e-002
4.9384e-002
0000
0000
10
1.0
5.2310e-002
5.5077e-002
4.5988e-002
11
1.1
5.6973e-002
5.3278e-002
4.6343e-002
12
1.2
5.7735e-002
5.1212e-002
4.8633e-002
13
1.3
5.4504e-002
5.0880e-002
5.0991e-002
14
1.4
5.0380e-002
5.1623e-002
5.2590e-002
15
1.5
4.8406e-002
5.2020e-002
5.3370e-002
16
1.6
4.9154e-002
5.1698e-002
5.3449e-002
17
1.7
5.1093e-002
5.1318e-002
5.2948e-002
18
1.8
5.2530e-002
5.1478e-002
5.2129e-002
19
1.9
5.2919e-002
5.2044e-002
5.1409e-002
41
2.0
5.2687e-002
5.2464e-002
5.1133e-002
21
2.1
5.2382e-002
5.2424e-002
5.1345e-002
22
2.2
5.2170e-002
5.2088e-002
5.1799e-002
23
2.3
5.1968e-002
5.1812e-002
5.2185e-002
24
2.4
5.1754e-002
5.1777e-002
5.2334e-002
25
2.5
5.1642e-002
5.1900e-002
5.2270e-002
26
2.6
5.1726e-002
5.2014e-002
5.2118e-002
27
2.7
5.1945e-002
5.2041e-002
5.1982e-002
28
2.8
5.2141e-002
5.2019e-002
5.1907e-002
29
2.9
5.2199e-002
5.2007e-002
5.1891e-002
30
3.0
5.2127e-002
5.2018e-002
5.1917e-00
20
0.2
0.15
0.1
posicion M1
posicion M2
posicion M3
0.05
0
0
x1
x2 x3
0.5
1.5
tiempo (s)
2.5
velocidades(m/s)
0.1
0.08
v1
0.06
0.04
0.02
0
0
velocidad M1
velocidad M2
velocidad M3
v2
v3
0.5
1.5
tiempo (s)
2.5
Se observa de la (3.9) que los desplazamientos de las masas es creciente mientras que sus
velocidades tienden a estabilizarse, es decir a tener una velocidad constante a partir de
t = 2s.
42
42
3.5.6.
Instrumento ssmico
k
m
,y c = wn m.
)(x1 x2 )
k(x1 x2 ) c(x 1 x2 ) = mx
1
d2 x
dt2
d2 x2
dx
+
dt2
d2 x
+ kx = 0
+c
dt
d2 x2
dx
+ c m+dtkx =
dt2
Pero x2 = A sin wt es la vibracion del cuerpo libre, sustituyendo
m
dt2
d2 x
dx
+ kx = mAw2 sin
dt2 + c wt dt
c
k
x2
x1 + Aw2 sin(wt)
m
m
m
x1
1
k
2
1
k
2
Base
x2
grid;
subplot(2,1,2);
plot(t,Y(2,:));
grid;
Programa F4.m
function f=F4(Y,M,F);
f=M*Y+F;
0.3
altura
0.2
0.1
0
0.1
0.2
0
10
15
10
15
tiempo
velocidad
0.5
0.5
1
0
5
tiempo
3.6.
Problemas propuestos
y(0) = 0
en los puntos x =0, 0.1, 0.2, . . .,4.0. Utilice sus respuestas para trazar una gr
afica aproximada de la solucion en [0, 4].
2. Sean los siguientes problemas de valor inicial:
1
y =
t(y 2 + y)
t [1, 3] , y(1) =
2
y = sin(t) + et ,
t [1, 4] , y(0) =
0
dT
1
=
Q A(T 4 2984 ) hc A(T 298) ,
dt
V c
T (0) = 298K
a)
=u
+
du
+1 v +
5
u
2
v2
el
m1 y1 = k1 y1 + k2 (y2 y1
)
m1 y2 = k2 (y2 y1
)
y1
y2
x
r3
r3
p
donde r = x2 + y 2 es la distanacia a la tierra, situada en el origen de coordenadas
y u = G.(MT + ms ) 398598, 309km3 /s2 es llamado constante gravitacional, en
el que se considera nula la masa del satelite respecto a la Tierra.
a)
x (0) =
y (0) =
28827km/s
y
a ) xy = y lnx con x [0, 3], y(0) = e, y (0) = 0
TS1 = 100o
TS
TB0 = 20
TB
TB0 =?
TS
TS0 =?
Figura 3.13: Intercambiador de calor
Captulo 4
Control del error y el metodo de
Runge-Kutta-Fehlberg
Mediante metodos de orden distinto podemos predecir el error local de
truncamiento y seleccionar con esta prediccion un tamano de paso que controle el
error global.
Para ilustrar este metodo supongamos que tenemos dos metodos de aproximacion.
El primero es un metodo de n-esimo orden obtenido de un metodo de Taylor de
n-esimo
orden de la forma
y(xi+1 ) = y(xi ) + h(xi , y(xi ), h) + O(hn+1 )
que produce las aproximaciones
w0 =
wi+1 = wi + h(xi+1 , wi , h),
para
i>0
para
i>0
51
51
y(xi+1 ) y(xi
)
(xi , y(xi ), h)
h
y(xi+1 ) wi
(xi , w
i , h)
h
y(xi+1 ) [wi + h(xi , wi , h)]
h
1
(y(xi+1 ) wi+1 )
h
1
i+1 (h) = (y(xi+1 ) wi+1 )
h
En consecuencia
1
(y(xi+1 ) wi+1 )
h
1
[(y(xi+1 ) wi+1 ) + (wi+1 wi+1 )]
=
h
1
= i+1 (h) + (wi+1
h
wi+1 )
i+1 (h) =
donde i+1 (h) es O(hn ) y i+1 es O(hn+1 ), por lo tanto la parte significativa proviene
de
1
(wi+1 wi+1
h
)
Esto nos da una aproximacion del error local de truncamiento del metodo O(hn
):
1
i+1 (h) (wi+1
h
wi+1 )
El objetivo no es solo estimar el error local del truncamiento, sino ajustar ademas el
tamano de paso para mantenerlo dentro de una cota especificada. Para hacerlo, ahora se
supone que como i+1 es O(hn ), existe un numero K independiente de h
i+1 (h) K hn
Podemos estimar el error local de truncamiento producido al aplicar el metodo de nesimo orden con un nuevo tamano de paso qh, usando las aproximaciones originales
wi+1 y wi+1
qn
(wi+1 wi+1 )
i+1 (qh) K (qh)n = q n (K hn ) q n i+1 (h)
h
1/n
h
q |w
wi+1 |
i+1
Un metodo que usa esta desigualdad para controlar el error es el metodo de
Runge- Kutta-Fehlberg.Este consiste en emplear el metodo de Runge-Kutta con error
local de truncamiento de quinto orden
16
6656
28561
9
2
wi+1 = wi +
k1 +
k3 +
k4
k5 +
k6
135
12825
56430
50
55
para estimar el error local en un metodo de Runge-Kutta de cuarto orden dado por
wi+1 = wi +
25
1408
2197
1
k1 +
k3 +
k4 k5
216
2565
4104
5
donde
k1 = hf (xi , wi )
h
1
k2 = hf (xi + , wi + k1 )
4
4
3
3
9
k3 = hf (xi + h, wi +
k1 +
k2 )
8
32
32
12
1932
7200
7296
h, wi +
k1
k2 +
k3 )
k4 = hf (xi +
13
2197
2197
2197
439
3680
845
k1 8k2
k3
k4 )
k5 = hf (xi + h, wi +
216
513
4104
+
k6 =
1
8
3544
1859
11
hf (xi + h, wi
k1 + 2k2
k3 +
k4
k5 )
2
27
2565
4104
40
La ventaja de este metodo se da en que solo se requiere seis evaluaciones de f por paso.
Los metodos arbitrarios de Runge Kutta de cuarto y quinto orden usados de manera
conjunta requieren cuatro y seis evaluaciones de f, respectivamente, lo cual da diez
evaluaciones de f.
En el control del error, un valor inicial de h en el i-esimo paso se uso para obtener los
primeros valores de wi+1 y wi+1 , que nos permitieron determinar q en ese paso y luego se
repitieron los calculos. Este procedimiento requiere el doble de evaluaciones de
funciones por paso, sin control de error. En la practica, el valor de q a usar se selecciona
de manera un poco diferente, a fin de que valga la pena el aumento de evaluaciones de
funciones. El valor de q determinado en el i-esimo paso cumple dos propositos:
1. Para rechazar, de ser necesario, la eleccion inicial de h en el paso i-esimo y repetir
los calculos por medio de qh, y
1/4
1/4
h
h
q=
= 0.84
2 |w i+1 wi |
|w i+1 wi
|
En el algoritmo para el metodo de Runge-Kutta-Fehlberg, se agrega el paso 9 para
suprimir grandes modificaciones al tamano del paso. Esto se hace para no tener
que dedicar mucho tiempo a los tamanos pequenos de paso en las irregularidades
de las derivadas de y, y para evitar los grandes tamanos de paso, que pueden llevar a
omitir las regiones sensibles entre los pasos. En algunos casos, en el algoritmo se omite
totalmente el procedimiento que aumenta el tamano del paso, y el procedimiento con
que se disminuye el tamano se modifica para que se incorpore solo cuando es necesario
controlar el el error
4.1.
Algoritmo
del
Metodo
de
Runge-
Kutta- Fehlberg
Aproxima la solucion del problema de valor inicial
y = f (x, y) a x b y(a) =
(4.1)
con un error local de truncamiento que no rebase la tolerancia especificada:
1. Entrada: a y b son los valores extremos del intervalo; es la condicion
inicial;
tolerancia TOL; tamano maximo de paso hmax; tamano mmino de paso
hmin.
2. Hacer
x=a
w=
h = hmax
BD = 1
SALIDA (x, w)
3. Mientras (BD = 1)
hacer
3.1 Hacer
k1 = hf (xi , wi )
h
1
k2 = hf (xi + , wi + k1 )
4
4
3
3
9
k3 = hf (xi + h, wi +
k1 +
k2 )
8
32
32
12
1932
7200
7296
k4 = hf (xi +
h, wi +
k1
k2 +
k3 )
13
2197
2197
2197
439
3680
845
k5 = hf (xi + h, wi +
k1 8k2
k3
k4 )
216
513
4104
+
k6 = hf (xi +
3.2 Tome R =
1
1
h |360
1
8
3544
1859
11
h, wi
k1 + 2k2
k3 +
k4
k5 )
2
27
2565
4104
40
2197
k1 4275128 k3
k4 50
+
75240
(R =
k5 55
+
k6 |
1
|wi+1 wi+1 |)
h
3.3 Si R T OL entonces
hacer
3.3.1 Hacer x = x + h
w= w+
25
1408
2197
1
k4 k5
k1 +
k3 +
5
216
2565
4104
4.2.
Programa
del
Kutta- Fehlberg
Metodo
de
Runge-
xi);
yi=y(xi));
fprintf(
wi);
fprintf(
hi);
fprintf(
fprintf(
fprintf(
|yi-wi|);
wi);
|yi-wii|\n);
fprintf(%12.3f,x);
fprintf(%12.3f,sol(x));
fprintf(%12.3f,w);
fprintf(
);
fprintf(%12.3f\n,sol(x)-w);
while band==1
k1=h*ff(x,w); k2=h*ff(x+(1/4)*h,w+(1/4)*k1);
k3=h*ff(x+(3/8)*h,w+(3/32)*k1+(9/32)*k2);
k4=h*ff(x+(12/13)*h,w+(1932/2197)*k1-(7200/2197)*k2+(7296/2197)*k3);
k5=h*ff(x+h,w+(439/216)*k1-8*k2+(3680/513)*k3-(845/4104)*k4);
k6=h*ff(x+(1/2)*h,w-(8/27)*k1+2*k2-(3544/2565)*k3+(1859/4104)*k4-(11/40)*k5);
R=(1/h)*abs((1/360)*k1-(128/4275)*k3-(2197/75240)*k4+(1/50)*k5+(2/55)*k6);
if R<=tol
x=x+h;
wi=w+(16/135)*k1+(6656/12825)*k3+(28561/56430)*k4-(9/50)*k5+(2/55)*k6;
w=w+(25/216)*k1+(1408/2565)*k3+(2197/4104)*k4-(1/5)*k5;
fprintf(%12.7f,x);
fprintf(%12.7f,sol(x));
fprintf(%12.7f,w);
fprintf(%12.7f,h)
fprintf(
%12.7e,abs(sol(x)-w));
fprintf(%12.7f,wi);
fprintf(
%12.7e\n,abs(sol(x)-wi));
end
delt=0.84*(tol/R)^(1/4);
if delt<=0.1
h=0.1*h;
elseif delt>=4
h=4*h;
else h=delt*h;
end
if h>hmax
h=hmax;
end
if x>=b
band=0;
elseif (x+h)>b
h=b-x;
elseif h<hmin
band=0;
end
end
function y2=sol(x)
y2=x/(1+log(x));
Ejemplo
Use el metodo de Runge-Kutta-Fehlberg
para aproximar la solucion del problema
y 2
y
, 0 x 4 , y(1) = 1 que tiene solucion y =
xde valor inicial y x=
x
.
(1 + lnx)
yi=y(xi)
wi
hi
|yi-wi|
wii
|yi-wii|
1.000
1.000
1.000
0.000
1.1101946
1.0051237
1.0051237
0.1101946
5.0083437e-008
1.0051237
7.3572313e-009
1.2191314
1.0175211
1.0175212
0.1089368
6.3878024e-008
1.0175212
4.2901327e-008
1.3572694
1.0396749
1.0396749
0.1381381
8.0686697e-008
1.0396749
5.1900760e-008
1.5290112
1.0732756
1.0732757
0.1717417
9.6474346e-008
1.0732756
6.3566870e-008
1.7470584
1.1213947
1.1213948
0.2180472
1.1067125e-007
1.1213948
7.1637317e-008
2.0286416
1.1881700
1.1881702
0.2815832
1.2109483e-007
1.1881701
7.4469349e-008
2.3994350
1.2795395
1.2795396
0.3707934
1.2387333e-007
1.2795395
6.7626636e-008
2.8985147
1.4041842
1.4041843
0.4990798
1.1211799e-007
1.4041842
4.4005706e-008
3.3985147
1.5285638
1.5285639
0.5000000
1.1162287e-007
1.5285639
9.1614480e-008
3.8985147
1.6514962
1.6514963
0.5000000
1.1352301e-007
1.6514963
1.0649609e-007
4.0000000
1.6762391
1.6762393
0.1014853
1.1398408e-007
1.6762393
1.1398268e-007
Las dos ultimas columnas de la tabla contienen los resultados del metodo de
quinto
orden. Con valores pequenos de xi , el error es menor que el de cuarto orden, pero
es mayor cuando xi aumenta.
4.3.
1.
Problemas propuestos
Aplique el algoritmo de Runge-Kutta-Fehlberg con la tolerancia T OL = 104 para
aproximar la solucion de los siguientes problemas de valor inicial.
a)
y = x1 (y 2 + y),
1 x 3,
0.02 b) y = sin x + ex ,
= 0.02 c)
2.
y = x2 ,
, y(1) = 2,
0 x 1,
0 x 2,
, y(0) = 0,
, y(0) = 0,
Runge-Kutta-Fehlberg
Use el metodo
de
con
la
tolerancia
T OL
problemas de valor inicial. Despues compare los resultados con los valores reales.
2
a ) y = 1 + x 1 + x y , 1 x 3, y(1) = 0, solucion real y(x) = x tan(ln x)
b) y
real
= (x + 2x3 )y 3 xy,
2
2,
y(0) =3
solucion
c) y
real
= (y + 1)(y + 3),
3,
y(0)
= 2 solucion
4
3
y
2 x 3,
1
y(2) = 1; solucion real y(x) = x +
(1x)
Materiales y Metodos
La informacion de los temas tratados se obtuvieron de las referencias bibliogr
aficas presentadas y de las paginas de internet como; Mathworks, Scielo,
es.scribd.com, Macgraw-hill.es y sciencedirect.com por consiguiente la tecnica usada
es documental, bibliografica.
En los captulos desarrollados se da una idea de como se llega a plantear la teor
a general,utilizando de esta manera el metodo inductivo y se da un ejemplo de
aplicacion, utilizando el software Matlab donde se ilustra la teora general planteada.
Para
la
elaboracion de
los programas
LABoratory, laboratorio de
matrices) es
Resultados
En cada captulo podemos dar los siguientes resultados:
En el captulo 1 se desarrolla el metodo de Euler dado por la formula (1.4), es
una de las tecnicas mas simples para
aproximar
exactitud,
pues
la
cantidad
de terminos se
incrementa, pero seria menos practico pues implicara hallar derivadas complicadas
de f (x, y).
En el capitulo 3 se desarrolla los metodos de Runge Kutta, no es solo un metodo
sino una importante familia de metodos iterativos que me permiten aproximar las
soluciones de ecuaciones diferenciales ordinarias, logran la exactitud del procedimiento
de una serie de Taylor, no requieren evaluar ninguna derivada, sino unicamente valores
de la funcion f (x, y). Todo ello hace que el metodo de Runge Kutta, sea mas facil
de aplicar que otros metodos. De todos los metodos de Runge Kutta el mas usado es
el de cuarto orden dado por (3.8), en el se requiere realizar cuatro evaluaciones por
paso, debera dar respuestas mas exactas que las del metodo de Euler con un
cuarto
de tamano
de paso para
se
que para una fuerza de u = 1300 Newtons las masas tienen desplazamientos pequenos
que son creciente, mientras que sus velocidades tienden
61
61
62
62
Discusion
En ingeniera hay diferentes procesos que son modelados por ecuaciones diferenciales
lineales y no lineales, determinar su solucion mediante metodos analticos es
muchas veces implosible, pero utilizando una
Kutta solo 10
64
64
65
65
Bibliografa
[BAE 06]
y
[BUR 02]
BURDEN,RICHARD
L.
DOUGLAS
FAIRES,
J..
Analisis
ingenieros
con
programas
de
aplicacion,
Mexico:
CORDERO B., ALICIA; HUESO P., JOSE L.; MARTINEZ M., EULALIA
Y TORREGOSA S.,JUAN RAMON. Problemas resueltos de Metodos
Numericos, Espana: Thomson, Primera edicion,2006.
[DEM 97]
DEMIDOVICH,B.P.
MARON,I.A..
Calculo
Numerico
[HAI 08]
[INF 08]
INFANTE DEL RIO, J,A.; REY C.,JOSE M.. Metodos Numericos teor
a, problemas y practicas con Matlab, Espana: Piramide, tercera edici
on, 2008.
[KRE 08]
[MOO 07]
67
67
[KEN 92]
KEN
NAGLE,R..Fundamentos
de Ecuaciones
Diferenciales, U.S.A:
[NAK 97]
[NIE 05]
[RAL 65]
[ROJ 01]
[SET 70]
[SCH 85]
68
68
Apendice
A:
Introduccion
Matlab
al
A.1
Vectores
matrices
programa
Para definir un vector fila, se introduce sus coordenas entre dos corchetes
>> A=[4 9 -10 22]
A =
4
-10
22
12
14
16
18
20
22
24
26
28
30
Las matrices se escriben como vectores, separando las filas mediante un punto y coma,
por ejemplo:
c=[1 2 3;5 9 2;4 5 6]
c =
1
70
70
>> x=-pi:0.1:pi;
>> y=x.*cos(x);
>> plot(x,y);
>>grid
>> hold on
A.3 Programaci
on
1. Calcule la suma de los n primeros terminos de la sucesion x, 2x2 , 3x3 , nxn
para un valor de x,
Programa sumas.m
n=input(ingrese cuantos terminos quiere sumar);
x=input(dame el valor del numeros x);
suma=x;
71
71
for i=2:n
72
72
suma=suma+i*x^i;
end
disp(el valor pedido es)
fprintf(suma= %4.2f\n
,suma);
10
(x2 + 1)dx
|f (t, u1 , u2 , . . . , um ) f (t, z1 , z2 , . . . , zm )| L
|uj zj |
j=1
(t, u1 , u2 , . . . , um ) y (t, z1 , z2 , . . . , zm ) en
D
O(h2 )
O(h3 )
O(h4 )
5 n 7
O(hn1 )
8 n 9
O(hn2 )
10 n
O(hn3 )
h0
h0
Por lo comun, las funciones que usamos para la comparacion tiene la forma G(h) =
p
h , donde p > 0. Nos interesa el mayor valor de p para el que F (h) = L + O(hp )
70
70
71
71