Matlab - Ayuda!! Problema de Cauchy usando el método Heun

   
Vista:

Ayuda!! Problema de Cauchy usando el método Heun

Publicado por jansen (3 intervenciones) el 12/05/2014 17:20:57
Llevo todo el día intentando hacerlo pero nada, estoy un poco desesperado.

Me dice que calcule la solución numérica del problema de Cauchy con el método Heun.

Variables entrada: f, h, t0, T, y0
Variables salida: t,y

Comprobar que el tamaño del paso h es un divisor de la longitud de (T-t0). Si es negativo, abortar el programa y mostrar un mensaje de error.

El problema:

y'=y^3, 0<=t<=0,25,
y(0)=1

Solución exacta.

y(t)=1/raiz(1-2t)

h=0.01

Me pide hallar el valor aproximado, el exacto y el error en el punto t=0.25. Con solución con ocho decimales.

En clase dimos el método euler, y sé que el de heun es una modificación de ese, pero no me sale :S
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
Imágen de perfil de Dave

Ayuda!! Problema de Cauchy usando el método Heun

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 12/05/2014 17:28:23
Hola Jansen;

El metodo de heun, efectivamente es una modificación al metodo de euler, unicamente debes utilizar una constante adicional para evaluar la función f, en un paso de tiempo t+1 y promediarlo con el evaluación con una paso de tiempo en el momento t.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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

Ayuda!! Problema de Cauchy usando el método Heun

Publicado por jansen (3 intervenciones) el 12/05/2014 17:59:05
Así en bruto no lo pillo, lo siento :(

Lo único que tengo es esto:

1
2
3
4
5
6
7
8
function [t,y]=Euler(f,N,t0,T,y0)
g=inline(f,'t','y');
h=(T-t0)/N;
t=t0:h:T;
y(1)=y0;
for i=1:N
    y(i+1)=y(i)+h*g(t(i),y(i));
end

¿Es el correcto?

Para comprobar que el paso no sea negativo sería:

if h<=0
fprintf('error del programa')
exit

Luego, no sé que hacer con la solución exacta, y como hallo el error??

Siento si pregunto mucho, soy bastante novato en matlab y la teoría va bastante justa.
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
Imágen de perfil de Dave

Ayuda!! Problema de Cauchy usando el método Heun

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 12/05/2014 18:03:10
Hola Jansen;

Te parece si lo coordinamos por e-mail.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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

Ayuda!! Problema de Cauchy usando el método Heun

Publicado por jansen (3 intervenciones) el 12/05/2014 18:19:10
Mejor, si.

Gracias.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Ayuda!! Problema de Cauchy usando el método Heun

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 13/05/2014 05:27:00
http://rabfis15.uco.es/LaboratorioVirtual/Tutorial/t16.htm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function [t,y]=heun1(f,N,t0,T,y0)
if nargin<1
    f='y^3';
    T=0.25;
    t0=0;
    y0=1;
    N=10;
end
g=inline(f,'t','y');
h=(T-t0)/N;
t=t0:h:T;
y(1)=y0;
for i=1:N
    y1=y(1)+g(t(i),y(i))*h;
    y(i+1)=y(i)+(g(t(i),y(i))+g(t(i+1),y1))*h/2;
end
plot(t,y); grid



1
2
3
4
5
6
7
8
9
10
>> [t,y]=heun1
 
t =
 
         0    0.0250    0.0500    0.0750    0.1000    0.1250    0.1500    0.1750    0.2000    0.2250    0.2500
 
 
y =
 
    1.0000    1.0260    1.0530    1.0812    1.1107    1.1417    1.1743    1.2086    1.2449    1.2834    1.3244



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
El correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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