Matlab - Qué devuelve ODE45??

 
Vista:

Qué devuelve ODE45??

Publicado por Adriel (2 intervenciones) el 17/11/2011 15:38:49
Puede ser la diferencia tan grande entre RungeKutta y ODE45 en los grafos?

close all
clear all
clc, clf,

U=240;
tslut=0.01;
Lo=1;
C=1e-6;


%ODE45 med Reltol
du = @(t,u)[ u(2); (2*u(1)/(1+u(1)^2))*u(2)^2-(1+u(1)^2)*u(1)/(Lo*C) ];
opt = odeset('Reltol', 1e-3);
[t,u] = ode45(du, [0 tslut], [0 U/Lo], opt);
grid on
plot(t,u(:,1),'--'), hold all
format long
%disp([t,u(:,1)])


%Runge-Kutta
t=0; y=[0 U/Lo]; T=t; Y=y; h=0.0001;
dy = @(t,y)[ y(2) (2*y(1)/(1+y(1)^2))*y(2)^2-(1+y(1)^2)*y(1)/(Lo*C) ];
while t < tslut-h/2;
f1= dy(t,y);
f2= dy(t+h/2, y+h*f1/2);
f3= dy(t+h/2, y+h*f2/2);
f4= dy(t+h, y+h*f3);
y=y+h/6*(f1+f2+f3+f4); t=t+h; T=[T;t]; Y=[Y;y];
end
plot(T,Y(:,1))
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Qué devuelve ODE45??

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 18/11/2011 15:16:55
hola Ariel.
Hubo un pequeño error en tu codigo. en este parte:
y=y+h/6*(f1+f2+f3+f4); t=t+h; T=[T;t]; Y=[Y;y];
ya lo arreglé:

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
clear all
U=240;
tslut=0.01;
Lo=1;
C=1e-6;
 
%ODE45 med Reltol
du = @(t,u)[ u(2); (2*u(1)/(1+u(1)^2))*u(2)^2-(1+u(1)^2)*u(1)/(Lo*C) ];
opt = odeset('Reltol', 1e-3);
[t,u] = ode45(du, [0 tslut], [0 U/Lo], opt);
figure(gcf)
plot(t,u(:,1),'r')
hold on
 
%Runge-Kutta
t=0; y=[0 U/Lo]; T=t; Y=y; h=0.0001;
dy = @(t,y)[ y(2) (2*y(1)/(1+y(1)^2))*y(2)^2-(1+y(1)^2)*y(1)/(Lo*C) ];
while t < tslut-h/2;
f1= dy(t,y);
f2= dy(t+h/2, y+h*f1/2);
f3= dy(t+h/2, y+h*f2/2);
f4= dy(t+h, y+h*f3);
y=y+h/6*(f1+2*f2+2*f3+f4); t=t+h; T=[T;t]; Y=[Y;y];
end
plot(T,Y(:,1),':g')
hold off
 
EJECUCION.
>> ode45_caballero



1
2
3
4
5
6
Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
PROGRAMADOR EN MATLAB
jjcc94@hotmai.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

Qué devuelve ODE45??

Publicado por Adriel (2 intervenciones) el 18/11/2011 16:46:19
Hola!
Muchas gracias, hace días me estaba preguntando porque las dos gráficas eran tan diferentes, ya lo corregí.
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

Qué devuelve ODE45??

Publicado por Adriel (1 intervención) el 18/11/2011 17:54:59
En este problema estoy tratando de calcular el periodo de la funcion y la amplitud max, pero no llego a ninguna conclusion.
Pense en Newton-Rapson pues ya tengo los valores de la función y la derivadas correspondiente en "u" que es lo que me devuelve ODE45. He intentado, pero ODE45 determina por si mismo el largo del paso. Si hago un plot con puntos de u(:,1) en el codigo mostrado, veo que los puntos están mas pegados en los maximos y minimos del grafico mostrado.
Tienes alguna sugerencia de algoritmo para determinar el periodo y la amplitud?
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