MatLabMorena

viernes, 11 de abril de 2008

Método de Runge-Kutta








Programa en MatLab de Runge-Kutta de orden dos.

function f
fprintf('\n \tRESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO RUNGE-KUTTA DE ORDEN 4\n')
f=input('\n Ingrese la ecuacion diferencial dy/dx=\n','s');
x0=input('\n Ingrese el primer punto x0:\n');
x1=input('\n Ingrese el segundo punto x1:\n');
y0=input('\n Ingrese la condicion inicial y(x0):\n');
n=input('\n Ingrese el numero de pasos n:\n');
h=(x1-x0)/n;
xs=x0:h:x1;
fprintf('\n''it x0 y(x1)');
for i=1:n
it=i-1;
x0=xs(i);
x=x0;
y=y0;
k1=h*eval(f);
x=xs(i+1);
y=y0+k1;
k2=h*eval(f);
y0=y0+(k1+k2)/2;
fprintf('\n%2.0f%10.6f%10.6f\n',it,x0,y0);
end
fprintf('\n El punto aproximado y(x1) es = %8.6f\n',y0);


Programa de Runge-Kutta de orden cuatro.

function f
fprintf('\n \tRESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO RUNGE-KUTTA DE ORDEN 4\n')
f=input('\n Ingrese la ecuacion diferencial\n','s');
x0=input('\n Ingrese el primer punto x0:\n');
x1=input('\n Ingrese el segundo punto x1:\n');
y0=input('\n Ingrese la condicion inicial y(x0):\n');
n=input('\n Ingrese el numero de pasos n:\n');
h=(x1-x0)/n;
xs=x0:h:x1;
fprintf('\n''it x0 y(x1)');
for i=1:n
it=i-1;
x0=xs(i);
x=x0;
y=y0;
k1=h*eval(f);
x=x0+h/2;
y=y0+k1/2;
k2=h*eval(f);
x=x0+h/2;
y=y0+k2/2;
k3=h*eval(f);
x=x0+h;
y=y0+k3;
k4=h*eval(f);
y0=y0+(k1+2*k2+2*k3+k4)/6;
fprintf('\n%2.0f%10.6f%10.6f\n',it,x0,y0);
end
fprintf('\n El punto aproximado y(x1) es = %8.6f\n',y0);

Solucion
2. Respuesta

>> runge2

RESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO RUNGE-KUTTA DE ORDEN 4

Ingrese la ecuacion diferencial dy/dx=
4*exp(0.8*x)-0.5*y

Ingrese el primer punto x0:
0

Ingrese el segundo punto x1:
4

Ingrese la condicion inicial y(x0):
2

Ingrese el numero de pasos n:
4

'it x0 y(x1)
0 0.000000 6.701082

1 1.000000 16.319782

2 2.000000 37.199249

3 3.000000 83.337767

El punto aproximado y(x1) es = 83.337767

respuesta
>> runge4

RESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO RUNGE-KUTTA DE ORDEN 4

Ingrese la ecuacion diferencial
-2*x^3+12*x^2-20*x+8.5

Ingrese el primer punto x0:
0

Ingrese el segundo punto x1:
0.5

Ingrese la condicion inicial y(x0):
1

Ingrese el número de pasos n:
5

'it x0 y(x1)
0 0.000000 1.753950

1 0.100000 2.331200

2 0.200000 2.753950

3 0.300000 3.043200

4 0.400000 3.218750

El punto aproximado y(x1) es = 3.218750

22 comentarios:

lolo esteban dijo...

morena eres lo máximo me has salvado, con eso apruebo mi final de "Numerico" de la UNI(universidad nacional de ingenieria-Perú)

te dejo mi msn para q me pases otros programas ps:
hestip_89@hotmail.com

daniel_aristi dijo...

more porfa agregame....neceseto el programa para el metodo de euler mejorado y con un ejemplo resuelto...si puedes envialo a mi correo por fa sdao32@gmail.com

Henry D'gans dijo...

Morena muchisimas gracias por la explicacion y los ejemplos me sirvieron de mucho para hacer el programa... no entendia nada pero con esto ahora si ya esta muy claro...

Daniel dijo...

gracias nena me aclaraste la mente

César dijo...

Gracias morenaza guapa!!

Unknown dijo...

eres la ley mujer , gracias ;) saludos desde mexico

Unknown dijo...

Hola Morena porfas necesito tu ayuda agregame christopheralva22@gmail.com si no este es mi problema :
Hola ... tengo un problema de una ecuacion diferencial que la tengo que solucionar usando Matlab y no la manejo muy bien...serian muy amables de porfavor de decirme como lo implementaria en Matlab el problema es:

y' = x^2 - 3y ; y(0)=1

Aproximar y(0.2) Utilize tamaño de paso h=0.1 . Utilizar método de Runge Kutta de Cuarto Orden

de antemano muchas gracias.

alejin de LIGA dijo...

una bestia, felicitaciones sgue adelante

Unknown dijo...

Estimada necesito ayuda!! porfavor mandeme un mail a jpmarin@gmail.com para poder explicarle me situacion!! muchas gracias

Unknown dijo...

y cómo funcionaría para una derivada de 2do orden?

Unknown dijo...

tendras la funcion que usas para resolver el problema???

Unknown dijo...

podrias xfavor ayudarme con un programa en matlav (.m) para resolver matrices. Yo se que es algo il[ogico pero
asi me pidieron, xfavor

Unknown dijo...

por favor en el codigo me sale un error en el k1=h*eval(f); me dice que no es un objetivo valido para una asignacion yuda urgente please

Unknown dijo...

por favor en el codigo me sale un error en el k1=h*eval(f); me dice que no es un objetivo valido para una asignacion yuda urgente please

Unknown dijo...

gracias morenasa me sirvio mucho

Unknown dijo...

miles de gracias!!! me has salvado para un exámen con este post

Unknown dijo...

como es el algoritmo para la grafica ?

Unknown dijo...

EN ESTE EJERCICIO ME DI CUENTA DE COMO SE TIENE QUE PROGRAMAR EN LO CUAL ME DIO UNA IDEA DE QUE HACER PARA OBTENERLO COMO SE DEBE YA QUE AL PROGRMARLO ME SALIA ERROR

Antony dijo...

??? function f
|
Error: Function definitions are not permitted at the prompt or in
scripts. help me please ..xd

Unknown dijo...

Me marca error en la función F en la primer línea no se como resolver eso

Grupo Industrial dijo...

me podria ayudar con el codigo para las graficas de runge kutta

Unknown dijo...

Puedes subir el código del tercer orden?