VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
Runge-Kutta f
1. UNIVERSIDAD CENTROCCIDENTAL
“LISANDRO ALVARADO”
DECANATO DE AGRONOMÍA
PROGRAMA DE INGENIERÍA AGROINDUSTRIAL
COMPUTACIÓN APLICADA
NÚCLEO OBELISCO
Integrantes:
Alvarez, Fernando C.I.17.618.791
Brizuela, Laurimar C.I.19.241.332
Navas, Dilmary C.I.19.449.757
Valero, Nélida C.I.18.862.072
Ing. Juan Carlos Molina
Barquisimeto, Enero del 2011
2. Implementación de sistemas numéricos
RUNGE-KUTTA
El método de Runge Kutta es un método numérico de resolución de
ecuaciones diferenciales que surge como una mejora del método de
Euler. El método de Euler se puede considerar como un método de
Runge Kutta de primer orden, el de Heun, es un método de Runge Kutta
de orden dos.
Los métodos de Runge-Kutta logran la exactitud del procedimiento de
una serie de Taylor sin requerir el cálculo de derivadas superiores. Existen
muchas variaciones, pero todas se pueden denotar en la forma
generalizada de la ecuación
yi + 1 = yi + F(xi,yi,h)h
Donde F(xi,yi,h) se conoce como la función incremento la cual puede
interpretarse como una pendiente representativa en el intervalo. La
función incremento se escribe en forma general como:
F = a1k1 + a2k2 +….+ ankn
Donde las a son constantes y las k son:
k1 = f(xi,yi)
k2 = f(xi + p1h,yi + q11k1h)
k3 = f(xi + p2h,yi + q21k1h + q22k2h)
kn = f(xi + pnh,yi + q2n-1k1h + qn-1,2k2h + …. + qn-1,n-1kn-1h)
Donde las p y q son constantes.
Como cada k es una evaluación funcional, esta recurrencia hace que
los métodos Runge-Kutta sean eficientes para la programación. Existen
varios tipos de métodos Runge-Kutta al emplear diferentes números de
términos en la función incremento como la especificada por n.
n = 1, es el método de Euler. Una vez se elige n, se evalúan las a, p y q al
igualar la función incremento a los términos en la serie de expansión de
Taylor. La versión de segundo orden para la ecuación en su forma
generalizada es:
3. Donde:
Los valores de a1, a2, p1 y q11 son evaluados al igualar el término de
segundo orden de la ecuación dada con la expansión de la serie de
Taylor.
Desarrollando tres ecuaciones para evaluar las cuatro incógnitas:
Como se tienen tres ecuaciones con cuatro incógnitas se tiene que
suponer el valor de una de ellas. Suponiendo que se especificó un valor
para a2, se puede resolver de manera simultánea el sistema de
ecuaciones obtenido:
Como se puede elegir un número infinito de valores para a2, hay un
número infinito de métodos Runge-Kutta de segundo orden.
a2 = 1/2: Método de Heun con un solo corrector, donde:
a2 = 1 : Método del punto medio.
a2 = 2/3: Método de Ralston.
Siguiendo el mismo razonamiento para n = 3, o sea, Runge-Kutta de
tercer orden, el resultado son seis ecuaciones con ocho incógnitas, por
lo tanto se deben suponer dos valores con antelación para poder
desarrollar el sistema de ecuaciones. Una versión ampliamente usada
es:
Éste es el más popular de los métodos Runge-Kutta de cuarto orden:
Ejemplo
Runge –Kutta para segundo orden, método punto medio.
4. Resuelva el siguiente problema de valor inicial en el intervalo de x=0 a
x=1.
dy
= yx 2 − 1.2 y
dx
Donde:
y(0)=1
h = 0.25
Solución
y i +1 = y i + k 2 h
k 1 = f(xi, y i )
1 1
k 2 = f(x i + h , y i + k 1 h)
2 2
Primera iteración
k 1 = f(x 0 , y 0 ) = f = (0 , 1)
k1 = (1)(0) 2 − 1.2(1)
k1 = −1.2
1 1
k 2 = f ( x0 + h , y 0 + k1 h)
2 2
1 1
k2 = f (0 + (0.25) , 1 + (−1.2)(0.25))
2 2
k2 = f (0.125,0.85)
k2 = 0.85(0.125) 2 − 1.2(0.85)
k2 = −1.006718
y1 = 1 + (−1.006718)0.25
y1 = 0.748320
Segunda iteración
x1 = x0 + h
x1 = 0 + 0.25
x1 = 0.25
k 1 = f(x 1 , y1 ) = f = (0.25 , 0.748320)
k1 = (0.748320)(0.25) 2 − 1.2(0.748320)
k1 = −0.851432
5. 1 1
k 2 = f (0.25 + (0.25) , 0.748320 + (−0.851432)(0.25))
2 2
k 2 = f (0.375,0.641891)
k 2 = 0.641891(0.375) 2 − 1.2(0.641891)
k 2 = −0.680003
y 2 = 0.748320 + (−0.680003)0.25
y 2 = 0.578319
Tercera iteración
x 2 = x1 + h
x 2 = 0.25 + 0.25
x 2 = 0 .5
k 1 = f(x 2 , y 2 ) = f = (0.5,0.578319)
k1 = (0.578319)(0.5) 2 − 1.2(0.578319)
k1 = −0.549403
1 1
k 2 = f ( x 2 + h , y 2 + k1 h )
2 2
1 1
k 2 = f (0.5 + (0.25) , 0.578319 + (−0.549403)(0.25))
2 2
k 2 = f (0.625,0.509643)
k 2 = 0.509643(0.625) 2 − 1.2(0.509643)
k 2 = −0.4125
y 3 = 0.578319 + (−0.4125)0.25
y 3 = 0.4752
Cuarta iteración
x3 = x 2 + h
x 3 = 0.5 + 0.25
x3 = 0.75
k 1 = f(x 3 , y 3 ) = f = (0.75,0.4752)
k1 = (0.4752)(0.75) 2 − 1.2(0.4752)
k1 = −0.3029
1 1
k 2 = f ( x 3 + h , y 3 + k1 h )
2 2
1 1
k 2 = f (0.75 + (0.25) , 0.4752 + (−0.3029)(0.25))
2 2
k 2 = f (0.875,0.4373)
6. k 2 = 0.4373(0.875) 2 − 1.2(0.4373)
k 2 = −0.1900
y 4 = 0.4752 + (−0.1900)0.25
y 4 = 0.4277
x4 = x3 + h
x 4 = 0.75 + 0.25
x4 = 1
Vectores solución
X 0 0.25 0.5 0.75 1
y 1 0.7483 0.5783 0.4752 0.4277
Algoritmo MATLAB- Segundo orden
%Método Runge kutta de segundo orden
x=0;
y=1;
t=0;
tmax=1;
h=0.25;
iter=round ((tmax-t)/h);
vectory=y;
vectort=t;
for i=1:iter
%Cálculo de las constantes de Runge-kutta
K1=(y*(t^2))-(1.2*y);
K2=(y+(K1/2)*h)*(t+(h/2))^2-(1.2*(y+(K1/2)*h));
y=y+(K2*h);
t=t+h;
vectory=[vectory y];
vectort=[vectort t];
end
vectory
vectort
subplot (1,1,1);
plot(vectort,vectory,'b-p');
title('Método runge kutta segundo orden. y vs t');
xlabel ('valores t');
ylabel ('valores y');
7. Runge –Kutta para tercer orden.
Se resuelve el mismo problema anterior pero esta vez mediante el uso
del método Runge kutta de tercer grado, de valor inicial, en el intervalo
de x=0 a x=1.
dy
= yx 2 − 1.2 y
dx
Donde:
y(0)=1
h = 0.25
Solución.
En el método de Runge kutta de tercer orden se utilizan las siguientes
formulas:
1
y i +1 = y i + (k 1 + 4k 2 + k 3 )h
6
k 1 = f(xi, y i )
8. 1 1
k 2 = f(x i + h , y i + k 1 h)
2 2
k 3 = f(x i + h , y i −k 1 h + 2k 2 h)
Primera iteración
k1 = f(x 0 , y 0 ) = f = (0 , 1)
k1 = (1)(0) 2 − 1.2(1)
k1 = −1.2
1 1
k 2 = f ( x0 + h , y 0 + k1 h)
2 2
1 1
k2 = f (0 + (0.25) , 1 + (−1.2)(0.25))
2 2
k2 = f (0.125,0.85)
k2 = 0.85(0.125) 2 − 1.2(0.85)
k2 = −1.0067
k 3 = f(x o + h , y o −k 1 h + 2k 2 h)
k 3 = f (0 + (0.25), (1) − (−1.2)(0.25) + 2(−1.0067)(0.25))
k 3 = f (0.25,0.7966)
k 3 = 0.7966(0.25) 2 − 1.2(0.7966)
k 3 = −0.9062
1
y1 = y 0 + (k 1 + 4k 2 + k 3 )h
6
y1 = 0.7445
Segunda iteración
x1 = x0 + h
x1 = 0 + 0.25
x1 = 0.25
k 1 = f(x 1 , y1 ) = f = (0.25 , 0.7445)
k1 = (0.7445)(0.25) 2 − 1.2(0.7445)
k1 = −0.8468
1 1
k 2 = f ( x1 + h , y1 + k1 h)
2 2
9. 1 1
k 2 = f (0.25 + (0.25) , 0.7445 + (−0.8469)(0.25))
2 2
k 2 = f (0.375,0.6386)
k 2 = 0.6386(0.375) 2 − 1.2(0.6386)
k 2 = −0.6765
k 3 = f(x 1 + h , y1 − k 1 h + 2k 2 h)
k 3 = f (0.25 + (0.25), (0.7445) − (−0.8469)(0.25) + 2(−0.6765)(0.25))
k 3 = f (0.5,0.6178)
k 3 = 0.6178(0.5) 2 − 1.2(0.6178)
k 3 = −0.5870
1
y 2 = y1 + (k 1 + 4k 2 + k 3 )h
6
y 2 = 0.5720
Tercera iteración
x 2 = x1 + h
x 2 = 0.25 + 0.25
x 2 = 0 .5
k 1 = f(x 2 , y 2 ) = f = (0.5,0.5720)
k1 = (0.5720)(0.5) 2 − 1.2(0.5720)
k1 = −0.5434
1 1
k 2 = f ( x2 + h , y 2 + k1 h)
2 2
1 1
k2 = f (0.5 + (0.25) , 0.5720 + (−0.5434)(0.25))
2 2
k2 = f (0.625,0.5041)
k2 = 0.5041(0.625) 2 − 1.2(0.5041)
k2 = −0.4080
k 3 = f(x 2 + h , y 2 − k 1 h + 2k 2 h)
k 3 = f (0.5 + (0.25), (0.5720) − (−0.5434)(0.25) + 2(−0.4080)(0.25))
k 3 = f (0.75,0.5038)
k 3 = 0.5038(0.75) 2 − 1.2(0.5038)
k 3 = −0.3212
10. 1
y 3 = y 2 + (k 1 + 4k 2 + k 3 )h
6
y 3 = 0.4679
Cuarta iteración
x3 = x 2 + h
x 3 = 0.5 + 0.25
x3 = 0.75
k 1 = f(x 3 , y 3 ) = f = (0.75,0.4679)
k1 = (0.4679)(0.75) 2 − 1.2(0.4679)
k1 = −0.2986
1 1
k 2 = f ( x3 + h , y 3 + k1 h )
2 2
1 1
k2 = f (0.75 + (0.25) , 0.4679 + (−0.2983)(0.25))
2 2
k2 = f (0.875,0.4306)
k2 = 0.4306(0.875) 2 − 1.2(0.4306)
k2 = −0.1871
k 3 = f(x 3 + h , y 3 − k 1 h + 2k 2 h)
k 3 = f (0.75 + (0.25), (0.4679) − ( −0.2983)(0.25) + 2(−0.1871)(0.25))
k 3 = f (1,0.4489)
k 3 = 0.4489(1) 2 − 1.2(0.4489)
k 3 = −0.0898
1
y 4 = y 3 + (k 1 + 4k 2 + k 3 )h
6
y 4 = 0.4206
x 4 = x3 + h
x 4 = 0.75 + 0.25
x4 = 1
Vectores solución
X 0 0.25 0.5 0.75 1
y 1 0.7445 0.5720 0.4679 0.4206
11. Algoritmo MATLAB- Tercer orden
%Método Runge-Kutta de 3er orden
x=0;
y=1;
t=0;
tmax=1;
h=0.25;
iter=(tmax-t)/h;
vectory=y;
vectort=t;
for i=1:iter
%Cálculo de las constantes de Runge-kutta
K1=(y*(t^2))-(1.2*y);
K2=(y+(K1/2)*h)*(t+(h/2))^2-(1.2*(y+(K1/2)*h));
K3=(y-(K1*h)+(2*K2*h))*((t+h)^2)-(1.2*((y-(K1*h)+(2*K2*h))));
y=y+((K1+(4*K2)+K3)/6)*h;
t=t+h;
vectory=[vectory,y];
vectort=[vectort,t];
end
vectory
vectort
subplot (1,1,1);
plot(vectort,vectory,'r-*');
title('Método runge kutta Tercer orden. y vs t');
xlabel ('valores t');
ylabel ('valores y');
12. Aplicación
Los métodos numéricos son técnicas, donde es posible resolver los
problemas por medio de operaciones aritméticas, estos métodos
implementan un buen numero de cálculos que son por demás
demasiado lentos si se hacen manualmente, gastando mucha energía
en la técnica misma de solución en vez de aplicarla sobre la definición
del problema y su interpretación.
El trabajo monótono que se hacia anteriormente al uso de la
computadora, hace de importancia, el dominio de los métodos
numéricos, los cuales se deben llevar a cabo en combinación con las
capacidades y potencialidades de la programación de computadoras
para de esa forma resolver los problemas de ingeniería mucho mas
fácilmente y eficientemente.
En general, estos métodos se aplican cuando se necesita un valor
numérico como solución a un problema matemático, y los
procedimientos "exactos" o "analíticos" (manipulaciones algebraicas,
teoría de ecuaciones diferenciales, métodos de integración, etc.) son
incapaces de dar una respuesta. Debido a ello, son procedimientos de
uso frecuente por físicos e ingenieros, y cuyo desarrollo se ha visto
13. favorecido por la necesidad de éstos de obtener soluciones, aunque la
precisión no sea completa. Debe recordarse que la física experimental,
por ejemplo, nunca arroja valores exactos sino intervalos que engloban
la gran mayoría de resultados experimentales obtenidos, ya que no es
habitual que dos medidas del mismo fenómeno arrojen valores
exactamente iguales.
Conclusión
El estudio de los métodos numéricos, es muy útil y por ende importante
para quien utilice esta herramientas para resolución de operaciones, las
cuales se saben que pueden resultar complicadas, tediosas y largas, y
por más que se dominen los métodos tradicionales, estos muchas veces
pueden no ser suficientes, sin embargo esto no quiere decir que la
operación sea imposible de solucionar, y es ahí donde los métodos
numéricos se aplican, y facilitan es trabajo de cierta manera.
Dentro del estudio de los métodos numéricos, se encuentran una gran
variedad de aplicaciones como lo fue el descrito en el presente trabajo
referido al método de runge kutta, que tiene como objetivo principal el
análisis y solución de los problemas de valor inicial de ecuaciones
diferenciales ordinarias, siendo estos una extensión del método de euler
para resolver las, pero con un orden de exactitud mas alto que este,
logrando así la exactitud del procedimiento sin requerir el cálculo de
derivadas superiores Por tal razón se toma como un método de gran
facilidad y rapidez lo que lo hace de gran importancia, ya que debido
a estas características su implantación resulta mas cómoda y fácil de
manejar, tomando en cuenta a la misma vez la utilización de su
algoritmo resultando una gran ventaja a nivel de su desenvolvimiento
en la programación en matlab. El mecanismo esta basado en la
aplicación de ecuaciones matemáticas de gran facilidad de empleo,
siendo esta otra característica positiva. Este método es de gran
aplicabilidad en diversas áreas de la industria lo que lo hace muy usado
en distintos niveles.
Bibliografía
Chapra, S y Canale, R (2003). Métodos numéricos para ingenieros.
Editorial Macgraw Hill. Cuarta edición. México.
Apellido,N (año). Titulo de oublicacion.Disponible en: www.jnhb.com.
consultado:fecha