Sei sulla pagina 1di 15

MTODO DE EULER Y RUNGE-KUTTA 4 ORDEN

Gonzalo Muoz Contreras


Email: zeppelin_bassguitar@hotmail.com
RESUMEN-Este documento presenta la comprobacin
y solucin de una ecuacin diferencial por dos mtodos
que son Mtodo de Euler y Runge-Kutta 4| orden y la
solucin de un sistema de ecuaciones diferenciales por
el Mtodo de Runge-Kutta 4 orden.

Como y(t) satisface la ecuacin diferencial, en particular


es y'(ti) = f(ti, yi), entonces reemplazando en la frmula
resulta:

OBJETIVO
Conocer los mtodos de Euler y Runge-kutta 4
orden y emplear los comandos para la solucin de
este mtodo empleando el software SCISLAB
5.5.0

Si se elimina de la frmula anterior el trmino del


error, se puede escribir:

INTRODUCCION TEORICA
MTODO DE EULER
El mtodo de Euler rara vez se utiliza en la prctica
para obtener la solucin aproximada de un problema de
valor inicial, pero se estudia por su simplicidad en la
derivacin de la frmula y de la determinacin del error.
Los mtodos de orden superior utilizan las mismas
tcnicas, pero el lgebra que requieren es mucho ms
complicada.

Resultando as la frmula del mtodo de Euler


para aproximar la solucin en un punto de la
malla, teniendo una aproximacin en el punto
inmediato anterior. Como la condicin en el punto
a del problema de valor inicial da el valor inicial
y(t0)= a, se tiene entonces la solucin aproximada
en todos los puntos de la malla. Si se llaman yi =
y(ti), se tiene entonces la frmula de Euler dada
en la frmula :

Con el mtodo de Euler se obtiene una solucin


aproximada de un problema de valor inicial como el que
se muestra en la ecuacin (1), en un conjunto finito de
puntos.

Para empezar, se determina la malla {t0, t1, ... , tN} de


paso h, donde t0 = a y tN = b. En estos puntos es
donde se va a obtener la aproximacin de la solucin.
Para determinar la frmula del mtodo, se parte de un
desarrollo de Taylor de la funcin solucin y(t),
alrededor de un punto de la malla, ti, suponiendo que la
funcin y(t) posee derivadas primera y segunda
continuas en (a, b):

Evaluando esta expresin en t = ti+1, para cualquier i,


se tiene:
Figura 1. Mtodo De Euler.

Pero como ti+1- ti = h, resulta:

METODO DE RUNGE-KUTTA 4 ORDEN


Los mtodos de Runge-Kutta son un conjuntos de
mtodos iterativos implcitos y explcitos para la
aproximacin
de
soluciones
de ecuaciones
diferenciales ordinarias, concretamente, del problema
de valor inicial.
Sea
una

ecuacin

diferencial

ordinaria,

con
donde
es un
conjunto abierto, junto con la condicin de que el valor
inicial de sea

Entonces el mtodo RK (de orden s) tiene la siguiente


expresin, en su forma ms general:

,
donde h es el paso por iteracin, o lo que es lo mismo,
el

incremento

entre

los

sucesivos

puntos
y
. Los coeficientes
son trminos
de aproximacin intermedios, evaluados en de
manera local

Variante
Existen variantes del mtodo de Runge-Kutta clsico,
tambin llamado Runge-Kutta explcito, tales como la
versin implcita del procedimiento o las parejas de
mtodos Runge-Kutta (o mtodos Runge-KuttaFehlberg).
Este ltimo consiste en ir aproximando la solucin de la
ecuacin mediante dos algoritmos Runge-Kutta de
rdenes diferentes, para as mantener el error acotado
y hacer una buena eleccin de paso.
Mtodos de Runge-Kutta
El mtodo de Runge-Kutta no es slo un nico mtodo,
sino una importante familia de mtodos iterativos, tanto
implcitos como explcitos, para aproximar las
soluciones
deecuaciones
diferenciales
ordinarias (E.D.Os);
estas
tcnicas
fueron
desarrolladas alrededor de 1900 por los matemticos
alemanes Carl David Tolm Runge y Martin Wilhelm
Kutta.
Mtodos de Runge-Kutta de cuarto orden
Un miembro de la familia de los mtodos Runge-Kutta
es usado tan comnmente que a menudo es
referenciado como RK4 o como el mtodo RungeKutta.
Definiendo un problema de valor inicial como:
Entonces el mtodo RK4 para este problema est dado
por la siguiente ecuacin:

Donde
con
coeficientes propios del esquema
numrico elegido, dependiente de la regla de
cuadratura utilizada. Los esquemas Runge-Kutta
pueden ser explcitos o implcitos dependiendo de las
constantes
del esquema. Si esta matriz es
triangular inferior con todos los elementos de la
diagonal
principal
iguales
a
cero;
es
decir,
para
son explcitos.
Ejemplo[editar]
Esquema Runge-Kutta

, los esquemas

de

dos

etapas,

una

. (t,y(t)) en

en
y otra en
la primera etapa es:

As, el siguiente valor (yn+1) es determinado por el


presente valor (yn) ms el producto del tamao del
intervalo (h) por una pendiente estimada. La pendiente
es un promedio ponderado de pendientes, donde

la pendiente al principio del intervalo,


es la
pendiente en el punto medio del intervalo,
usando

Para estimar (t,y) en


un esquema Euler

se usa

Con estos valores de , se sustituyen en la ecuacin

es

para

determinar

el

valor

de y en

el

punto
usando el mtodo de Euler.
es otra
vez la pendiente del punto medio, pero ahora
usando
para determinar el valor de y;
es la
pendiente al final del intervalo, con el valor
de y determinado por
. Promediando las cuatro
pendientes, se le asigna mayor peso a las pendientes
en el punto medio:

de manera que se obtiene la expresin:

Los
son:

coeficientes

propios

de

este

esquema

Esta forma del mtodo de Runge-Kutta, es un mtodo


de cuarto orden lo cual significa que el error por paso
es del orden de

, mientras que el error total

acumulado tiene el orden

. Por lo tanto, la

convergencia del mtodo es del orden de


,
razn por la cual es usado en los mtodos
computacionales.

definamos "x=-10:0.1:10" e "y=x.^3;". Si queremos


graficar y como funcin de x escribimos en la
consola: plot(x,y); .
Scilab abre entonces una nueva ventana donde hace el
grfico correspondiente y que se muestra en la Figura
2.

Scilab fue desarrollado en el INRIA, Institut National de


Recherche en Informatique et Automatique, un
excelente instituto francs de investigacin, con la
colaboracin de la escuela de ingenieros ENPC, Ecole
Nationale de Ponts et Chaussees.
Sus principales caractersticas son:

software para calculo cientfico

interactivo

programable

de libre uso, con la condicin de siempre


hacer referencia a sus autores

disponible para diferentes plataformas:


Windows, Linux, Sun, Alpha.
FUNCIONES
En un archivo ASCII puede haber varias funciones.
Generalmente el nombre de los archivos de
Funciones tienen la extensin .sci. El esquema general
de una funcin es el siguiente:
function [res1, res2, ...] = nombre funcin(par1, par2, ...)
...
...
endfunction
El significado de res1 es resultado 1 o tambin
parmetro de salida 1. El significado de par2 es
Parmetro de entrada 2 o simplemente parmetro 2.
Cuando la funcin tiene un nico resultado,
el esquema puede ser simplemente:
function result = nombre funcin(par1, par2, ...)
...
...
endfunction

Figura 2. Grafica en scilab.


COMANDO CLEAR
El comando clear es un comando que me permite
borrar una o ms variables. Lo que hace es eliminar
del espacio de trabajo, una variable.
En el ejemplo de la figura definimos una variable x que
contiene los elementos del vector [1 2 3 4], mostramos
la variable, la eliminamos con el comando clear x, y
luego mostramos que la variable x ya no est definida
en el entorno de trabajo.

FOR
La estructura for tiene la siguiente forma:
for var=lim1:incr:lim2
...
...
end
Esto quiere decir que la variable var empieza en el
lmite inferior lim1, despus va incrementar
El valor en el incremento incr (puede ser negativo). Si el
incremento es 1, este se puede suprimir.
A continuacin algunos ejemplos.
for i=2:3:14
...
...
end
for j=2:-3:-10
GRAFICAS.
Los vectores constituyen los elementos claves para
hacer grficos de una variable en funcin de otra. Por lo
general tenemos un conjunto de datos "x" y otro
conjunto de datos "y" relacionados entre s. Por ejemplo

Figura 3. Comando clear..

DIAGRAMAS DE FLUJO

Inicio

Function
(x,y)=euler(F,X0,Y0,h,n)

X(1)=X0
Y(1)=Y0

For i=1:n

X(i+1)=x(i)+h

Plot x,y

Y(i+1)=y(i)+f(x(i)),y(i)h

End function

Valores x

Valores y
Euler
(f,X0,Y0,h,n)

Fin
Figura 4. Diagrama de flujo del mtodo de Euler.

INICIO

INICIO

CLC, CLEAR

Function [t,x,y] =RK4_sis(t0, t0,


x0, y0, n)

INGRESA
X(0), Y(0), h, n

t= t0: h:

Function
Z=F(x,y)

X= zeros (n+1,
1)

y= zeros (n+1, 1)

Z=x^2+0.5*y^2

y= zeros (n+1, 1)
Y (1)=y0

For i=1:n

For i= 1n

Forj=1:i
K1=f(x(i),y(i))
K2=f(x(i)+h/2,y(i)+K1*h/2)
K3=f(x(i)+h/2,y(i)+K2*h/2)
K4=f(x(i)+h,y(i)+K3*h)
y(i+1)=y(i)+((K1+2*K2+2*K3+K4)*h)/6
x(i+1)=x(i)+h
i=i+1

Disp(x(j),y(j)

Plot x,y

K1= h (f (t (i), x (i), y (i)))


l1= h (g (t (i), x (i), y (i)))
K2= h (f (t (I) + h/2, x (i) + k1/2, y (i) + l1/2))
l2= h (g (t (I) + h/2, x (i) + k1/2, y (i) + l1/2))
K3= h (f (t (I) + h/2, x (i) + k2/2, y (i) + l2/2))
L3= h (g (t (I) + h/2, x (i) + k2/2, y (i) + l2/2))
K4= h (f (t (I) + h/2, x (i) + k3/2, y (i) + l3/2))
L4= h (g (t (I) + h/2, x (i) + k3/2, y (i) + l3/2))

X(i+1)= x (i) + k1+2k2+ 2k3+k4) /6)


y(i+1)= y (i) + l1+2l2+ 2l3+l4) /6)

Fin
Fin
Figura 5. Diagrama de flujo del mtodo de Runge-kutta
4 orden.

Figura 6. Diagrama de flujo del mtodo de Runge-kutta


4 orden para un sistema de ecuaciones.

DESARROLLO DEL PROGRAMA


clc;
clear;
disp('ALUMNO MUOZ CONTRERAS GONZALO')
disp('GRUPO 9EM1')
disp("MTODO DE EULER")
x0=input("Ingresa el Valor de X(0): ");
y0=input("Ingrese el Valor de Y(0): ");
h=input("Ingrese el Valor de h: ");
n=input("Ingrese el Valor de n: ");
function [x, y]=euler(F, x0, y0, h, n)
x(1)=x0;
y(1)=y0;
for i=1:n
x(i+1)=x(i)+h;
y(i+1)=y(i)+F(x(i),y(i))*h;
end
plot(x,y)
endfunction
function z=F(x, y)
z=(x^2+0.5*y^2);
endfunction
[x,y]=euler(F,x0,y0,h,n)
mprintf("\n\n\tValores de las Iteraciones\n\n")
mprintf("\tValores x\tValores y\n")
mprintf("\t%f\t%f\n",x,y)

clc;
clear;
disp('ALUMNO MUOZ CONTRERAS GONZALO')
disp('GRUPO 9EM1')
disp("MTODO DE RUNGE-KUTTA 4 ORDEN ")
x=input("Ingrese el Valor de X(0)=");
y=input("Ingrese el Valor de Y(0)=");
h=input("Ingrese el Valor de h=");
n=input("Dame el valor de n=");
function z=f(x, y)
z=x^2+0.5*y^2;
endfunction
for i=1:n
K1=f(x(i),y(i))
K2=f(x(i)+h/2,y(i)+K1*h/2)
K3=f(x(i)+h/2,y(i)+K2*h/2)
K4=f(x(i)+h,y(i)+K3*h)
y(i+1)=y(i)+((K1+2*K2+2*K3+K4)*h)/6
x(i+1)=x(i)+h
i=i+1;
end
mprintf('\n i\t x(i)\t\t y(i)');
mprintf("\n");
for j=1:i;
mprintf('%2d \t %7.3f \t %7.3f ',j-1,x(j),y(j));
mprintf("\n");
end
plot(x,y)

clc;
clear;
disp('ALUMNO MUOZ CONTRERAS GONZALO')
disp('GRUPO 9EM1')
disp("MTODO DE RUNGE-KUTTA 4 ORDEN PARA
UN SISTEMA DE ECUACIONES")
x=input("Ingrese el valor de x0 =");
y=input("Ingrese el valor de y0=");
ti=input("Ingrese el valor de tiempo inicial t0=");
tf=input("Ingrese el valor de tiempo inicial tf=");
h=input("Ingrese el valor h=");
n=(tf-ti)/h
t=ti:h:tf
function z=f(t, x, y)
z=-3*x+y;
endfunction
function a=g(t, x, y)
a=-4*x-3*y;
endfunction
for i=1:n
K1=f(t(i),x(i),y(i))
i1=g(t(i),x(i),y(i))
K2=f(t(i)+h/2,x(i)+K1*h/2,y(i)+i1*h/2)
i2=g(t(i)+h/2,x(i)+K1*h/2,y(i)+i1*h/2)
K3=f(t(i)+h/2,x(i)+K2*h/2,y(i)+i2*h/2)
i3=g(t(i)+h/2,x(i)+K2*h/2,y(i)+i2*h/2)
K4=f(t(i)+h,x(i)+K3*h,y(i)+i3*h)
i4=g(t(i)+h,x(i)+K3*h,y(i)+i3*h)
x(i+1)=x(i)+((K1+2*K2+2*K3+K4)*h/6)
y(i+1)=y(i)+((i1+2*i2+2*i3+i4)*h/6)
end
mprintf('\n i\t t(i)\t\t x(i)\t\t y(i)');
mprintf("\n");
for j=1:n;
mprintf('%2d \t %7.3f \t %7.3f \t %7.3f ',j-1,t(j+1),x(j),y(j));
mprintf("\n");
end
plot (t, x, "r")
plot (t, y, "b")

CORRIDA DEL PROGRAMA

Figura 7. Corrida del Mtodo de Euler.

Figura 8. Corrida del Mtodo de Runge-Kutta 4 orden .

Figura 9. Corrida del Mtodo de Runge-Kutta 4 orden


para un sistema de ecuaciones .

DEMOSTRACIONES

Figura 10. Demostracion del Mtodo de Euler.

Figura 11 (A). Demostracion del Mtodo de RungeKutta 4 orden .

Figura 11 (B). Demostracion del Mtodo de RungeKutta 4 orden .

Figura 12 (A). Demostracion del Mtodo de RungeKutta 4 orden para un sistema de ecuaciones .

Figura 12 (B). Demostracion del Mtodo de RungeKutta 4 orden para un sistema de ecuaciones .

CONCLUSION
Al finalizar los procedimientos de la prctica anterior se
pudo conocer la utilidad de los mtodos de Euler y
Rugen-kutta 4 orden para la solucin ecuaciones.
Como se observa el Mtodo de Euler es ms fcil
desarrollarlo a comparacin del Mtodo de Rugen-Kutta
4 orden , ya que son puras formulas recursivas.

REFERENCIA
[1.]http://www.voluntariado.df.uba.ar/index.php/tutoriale
s-y-practicas-de-las-clases/scilab-introduccion#
[2]. Hctor Manuel Mora Escobar Introduccin a
SCILAB.
[3]. Manual de Inicializacin de SCILAB.
[4].http://aniei.org.mx/paginas/uam/CursoMN/curso_mn
_11.html
[5]. Mtodos Iterativos para Resolver Sistemas Lineales
Departamento de Matemticas, CCIR/ITESM
[6] Mtodos Numricos para Ingenieros 5ta Ed. Chapra

Potrebbero piacerti anche