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
>> 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:
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
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
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...
gracias nena me aclaraste la mente
Gracias morenaza guapa!!
eres la ley mujer , gracias ;) saludos desde mexico
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.
una bestia, felicitaciones sgue adelante
Estimada necesito ayuda!! porfavor mandeme un mail a jpmarin@gmail.com para poder explicarle me situacion!! muchas gracias
y cómo funcionaría para una derivada de 2do orden?
tendras la funcion que usas para resolver el problema???
podrias xfavor ayudarme con un programa en matlav (.m) para resolver matrices. Yo se que es algo il[ogico pero
asi me pidieron, xfavor
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
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
gracias morenasa me sirvio mucho
miles de gracias!!! me has salvado para un exámen con este post
como es el algoritmo para la grafica ?
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
??? function f
|
Error: Function definitions are not permitted at the prompt or in
scripts. help me please ..xd
Me marca error en la función F en la primer línea no se como resolver eso
me podria ayudar con el codigo para las graficas de runge kutta
Puedes subir el código del tercer orden?
Publicar un comentario