Matlab - M. Euler (Ecuación Integro Diferencial)

   
Vista:

M. Euler (Ecuación Integro Diferencial)

Publicado por Juan José (60 intervenciones) el 17/03/2015 08:49:45
Buenas chicos,

Voy a pediros ayuda para la solución de un problema utilizando el Método de Euler en una ecuación donde mezclan el método en sí, con una integral que tratan de aproximar mediante Regla del Trapecio.

El enunciado del problema lo subo en fotografia.

El código que yo he preparado lo pego aqui: (Funciona pero aparecen muchos Infinitos en el Resultado)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function E=eulerEj10(f,a,b,ya,M)
 
%Input   - f is the function entered as a string 'f'
%        - a and b are the left and right endpoints
%        - ya is the initial condition y(a)
%        - M is the number of steps
%Output  - E=[T' Y'] where T is the vector of abscissas and
%          Y is the vector of ordinates
 
% NUMERICAL METHODS: MATLAB Programs
%(c) 1999 by John H. Mathews and Kurtis D. Fink
%To accompany the textbook:
%NUMERICAL METHODS Using MATLAB,
%by John H. Mathews and Kurtis D. Fink
%ISBN 0-13-270042-5, (c) 1999
%PRENTICE HALL, INC.
%Upper Saddle River, NJ 07458
 
h=(b-a)/M;
T=zeros(1,M+1);
Y=zeros(1,M+1);
T=a:h:b;
Y(1)=ya;                                                                                                                       % k=0;
Y(2)=Y(1)+h*(1.3*Y(1)-0.25*(Y(1))^2-0.0001*Y(1)*(0+(h/2)*(0+Y(1))));           % k=1;
I(1)=0;                                                                                                                          % k=0;
I(2)=I(1)+(h/2)*(0+Y(1));                                                                                           % k=1;
for j=2:M
    I(j)=I(j-1)+(h/2)*(Y(j-1)+Y(j));
    Y(j+1)=Y(j)+h*(1.3*Y(j)-0.25*(Y(j))^2-0.0001*Y(j)*(I(j)));
end
 
E=[T' Y'];

He subido la EJECUCIÓN del Código en txt

Muchísimas Gracias por vuestro tiempo.
Saludos!!

Ejercicio-10
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 JOSE JEREMIAS CABALLERO

M. Euler (Ecuación Integro Diferencial)

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 17/03/2015 14:03:01
¿Como lo ejecutas y que muestras como error?

Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
jjcc94@hotmail.com
skype: josejeremiascaballero
Estimado Usuario, el correo es para servicios de cursos, asesoría y 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

M. Euler (Ecuación Integro Diferencial)

Publicado por Juan José (60 intervenciones) el 17/03/2015 14:09:47
Hola José,

Gracias por el interés. El ejecutado está subido en .txt, pero lo copio aqui:

Ejecución Código:

>> h=0.2;
>> ya=250;
>> a=0;b=20;
>> M=(b-a)/h;
>> f=@(y,i) 1.3*y-0.25*y^2-0.0001*y*(y^2/2) % (y^2/2) Integral

f =

@(y,i)1.3*y-0.25*y^2-0.0001*y*(y^2/2)

>> E=eulerEj10(f,a,b,ya,M)

E =

1.0e+276 *

0 0.0000
0.0000 -0.0000
0.0000 -0.0000
0.0000 -0.0000
0.0000 -0.0000
0.0000 -0.0000
0.0000 -0.0000
0.0000 -0.0000
0.0000 -2.8655
0.0000 -Inf
0.0000 -Inf
0.0000 -Inf
0.0000 -Inf
0.0000 -Inf
0.0000 -Inf
0.0000 -Inf
0.0000 -Inf
0.0000 -Inf
0.0000 -Inf
0.0000 -Inf

Siguen los valores de INF hasta que para en el extremo del intervalo. El código en sí, no da error, pero el resultado tiene algún problema puesto que hay muchos valores de INF (puede que se este dividiendo entre cero).

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

M. Euler (Ecuación Integro Diferencial)

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 17/03/2015 14:17:39
¿Cómo lo harías ese problema pero sin usar matlab, es decir analíticamente, en una hoja usando lapicero.?
Cuando de esa forma entenderás los cambios que debes hacer en el código y para que funciones.
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

M. Euler (Ecuación Integro Diferencial)

Publicado por Juan José (60 intervenciones) el 17/03/2015 15:39:24
Si. La verdad que tendría que coger papel y lápiz, y probablemente sería más cómodo darse cuenta de algo erróneo en el código.

Gracias de todas formas
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

M. Euler (Ecuación Integro Diferencial)

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 17/03/2015 15:40:26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
>> euler10caballero
 
t_T_Y =
 
[   0,             0,         250.0]
[ 0.2,        -256.0,       -2810.0]
[ 0.4,     -40385.95,     -398489.5]
[ 0.6,   -7.944216e8,   -7.943414e9]
[ 0.8,  -3.156153e17,  -3.156153e18]
[ 1.0,  -4.982644e34,  -4.982644e35]
[ 1.2,  -1.241833e69,  -1.241833e70]
[ 1.4, -7.713836e137, -7.713836e138]
[ 1.6, -2.976353e275, -2.976353e276]
[ 1.8,          -Inf,          -Inf]
[ 2.0,          -Inf,          -Inf]
 
>> euler10caballero(0,200,300,100)
 
t_T_Y =
 
[    0,             0,         300.0]
[  2.0,      -43620.0,      -43920.0]
[  4.0,   -9.685604e8,   -9.684729e8]
[  6.0,  -4.708459e17,  -4.708459e17]
[  8.0,  -1.112913e35,  -1.112913e35]
[ 10.0,  -6.217652e69,  -6.217652e69]
[ 12.0, -1.940692e139, -1.940692e139]
[ 14.0, -1.890675e278, -1.890675e278]
[ 16.0,          -Inf,          -Inf]
[ 18.0,          -Inf,          -Inf]
[ 20.0,          -Inf,          -Inf]
 
>> euler10caballero(0,200,200,100)
 
t_T_Y =
 
[    0,             0,         200.0]
[  2.0,      -19080.0,      -19280.0]
[  4.0,   -1.867027e8,   -1.866643e8]
[  6.0,  -1.749149e16,  -1.749149e16]
[  8.0,   -1.53588e32,   -1.53588e32]
[ 10.0,  -1.184181e64,  -1.184181e64]
[ 12.0, -7.039474e127, -7.039474e127]
[ 14.0, -2.487621e255, -2.487621e255]
[ 16.0,          -Inf,          -Inf]
[ 18.0,          -Inf,          -Inf]
[ 20.0,          -Inf,          -Inf]



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
jjcc94@hotmail.com
skype: josejeremiascaballero
Estimado Usuario, el correo es para servicios de cursos, asesoría y 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

M. Euler (Ecuación Integro Diferencial)

Publicado por Juan José (60 intervenciones) el 17/03/2015 15:59:19
Buenas,

A simple vista parece que hay alguna asíntota no? El resultado tiende a Inf a partir de cierto valor.
¿Puedo ver su código modificado??

Me interesa la forma en que display los resultados.

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

M. Euler (Ecuación Integro Diferencial)

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 17/03/2015 16:03:16
1
E=vpa([T' Y'],10)
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

M. Euler (Ecuación Integro Diferencial)

Publicado por Juan José (60 intervenciones) el 17/03/2015 16:29:32
Gracias. Intentaré realizarlo con papel y lápiz y comprobar el resultado antes de pasar al Método de Heun

Saludos
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

M. Euler (Ecuación Integro Diferencial)

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 17/03/2015 16:32:30
El método es Euler.
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

M. Euler (Ecuación Integro Diferencial)

Publicado por Juan José (60 intervenciones) el 17/03/2015 17:09:49
Si si, me refiero que es el último ejercicio del Método de Euler de un libro que estoy estudiando, antes de pasar al Método de Heun (Otro capítulo)
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