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

 
Vista:
sin imagen de perfil

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
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

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

Publicado por Dave (1094 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
[email protected]
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
sin imagen de perfil

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
sin imagen de perfil

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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

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

Publicado por JOSE JEREMIAS CABALLERO (5917 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
[email protected]
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