Matlab - problemas con euler

 
Vista:

problemas con euler

Publicado por marcos (2 intervenciones) el 11/05/2009 14:21:10
Hola buenas,
estoy con un programa para el metodo de Euler y no consigo que me devuelva el valor de y
la secuencia del programa es la siguiente:
% metodo de Euler.m
function [X,Y] = dEuler(f,h,y0,x0,xf)
% Metodo de Euler para resolver una ecuacion diferencial
% ordinaria de la forma:
% dy
% -- = f(x,y) con condicion incial y(x0) = y0
% dx
x = x0;
y = y0;
Y = y';
X = x;
while x<xf
y = y + h*feval(f,x,y);
x = x + h;
Y=[Y;y'];X=[X;x];
end

la ecuación diferencial la introducco primero en un fichero al que llamo myfun, da bien el valor de f y de x pero no consigo el de y.

Muchas gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problemas con euler

Publicado por ramiro (54 intervenciones) el 12/05/2009 20:58:12
Marcos:
No sé cómo le estés pidiendo los valores, tampoco me queda muy claro qué es y'.
Le hice una ligera modificación a tu programa y ya funciona, quedó de la siguiente manera:

function [X,Y] = dEuler(f,h,y0,x0,xf)
% Metodo de Euler para resolver una ecuacion diferencial
% ordinaria de la forma:
% dy
% -- = f(x,y) con condicion incial y(x0) = y0
% dx
x = x0;
y = y0;
Y = y;
X = x;
while x<xf
y = y + h*feval('f',x,y);
x = x + h;
X=[X;x];,Y=[Y;y];
end

Lo probé con:
function yp=f(x,y)
yp=-x./y;

Nota que en feval, fue necesario definir el argumento como 'f', es decir, f entre apostrofes, una vez definidos estos dos archivos, escribe lo siguiente en la ventana de comandos de matlab y ya está:
>>[X,Y]=dEuler('f',0.01,1,2,sqrt(5))

Espero que todavía te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con euler

Publicado por ramiro (54 intervenciones) el 12/05/2009 23:26:58
Marcos:
Disculpa, realmente los aporstrofes en la f dentro de feval son innecesarios, tu programa así como está funciona bien, sólo debes pedir la Y en la salida junto con la X, en la forma que te mencioné en el mensaje anterior, te sugiero que al final las juntes en una sola variable, que puede ser por ejemplo tabla:
>>tabla=[X Y]
Ramiro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con euler

Publicado por marcos (2 intervenciones) el 13/05/2009 00:45:11
Gracias Ramiro,
No estaba pidiendo la Y, con lo de la tabla ya me funciona correctamente.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar