Matlab - ODE45 tspan

 
Vista:

ODE45 tspan

Publicado por Maria (27 intervenciones) el 17/12/2015 13:28:52
Hola!!! Necesito ayuda como siempre con ode45!!!
Yo quiero integrar una funcion x que depende de los siguientes parametros (K,R,W,phi):

-W es un vector con unos valores
-K es una consante
-R es un valor que se calcula en funcion de la solucion x
-phi es un valor constante

mi funcion es dx=W+K*R*sin(phi-x)

K=3
W el vector de frecuencias ya dadas
R=0 (inicialmente)
phi el valor que decidamos poner

R=sqrt(rx^2+ry^2)
donde rx= sum (cos(x))
ry=sum(sin(x))

es decir para cada valor de x, se calcula el R porque influye en la propia resolucion de la ecuacion.
Que prolema tengo? cada vez que se resuelve la ode45 se resuelve para muchisimos valores de tiempo.
Quiero hacer un time step de manera que para cada intervalo de tiempo se resuelva la ecuacion y me de un R, para el siguiente intervalo de tiempo se resuelva denuevo la ecuacion utilizando ese nuevo R...y asi sucesivamente.
Un saludo!!
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

ODE45 tspan

Publicado por Maria (27 intervenciones) el 18/12/2015 12:26:55
Hola Jeremias!
Si recuerdo que me contestaste, gracias de verdad, pero en este caso cambia bastante ...si me hechases una mano de nuevo, te lo agradeceria! 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

ODE45 tspan

Publicado por Maria (27 intervenciones) el 18/12/2015 12:34:27
Te escribo el codigo; Muchisimas gracias %frecuencias iniciales (caso lorentziana)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
N=input(' Introduce el numero de osciladores :');
a=0;
b=1;
G=a+(b-a)*rand(N,1);
c=0.5;
w=c*tan(G*pi-pi/2);
 
%fValor de la constante K
K=3;
 
%Calculamos condiciones iniciales para las thetha(i) que la vamos a llamar
%xo(dentro del bucle de tiempo)
z=0;
v=2*pi;
xo=z+(v-z)*rand(N,1);
 
%Tenemos que calcular R que va entre 0 y 1 y el angulo medio phi y como
%evolucionan en el tiempo la fase theta.
 
dt=0.5; %intervalos de tiempo
R=1;
phi=0;
theta=xo;
 
for t=2:1:202 %200 (t)time steps
 
  rx=0;
  ry=0;
 
    TO=(t-1)*dt; %tiempo inicial
    T=t*dt;      %tiempo final dentro del intervalo
 
 
    %parámetros ode45: tiempo integracion y opciones
 
    options=odeset('RelTol',1e-6);
 
 
    q=sin(phi-theta)
 
    %funcion que queremos integrar
    f=@(t,theta)(w+(K*R*q));
 
    %ode45 integra funcion
    [t,theta]=ode45(f,[0 0.5],xo,options);
 
 
    yo=theta
 
    rx=(1/N)*cos(yo);
    RX=sum(rx);
 
 
    ry=(1/N)*sin(yo);
    RY=sum(ry);
 
  %bucle N
 
R=sqrt(RX.^2+RY.^2);
 
phi=atan2(RY,RX);
 
 
plot(T,R);
hold on
 
end  %bucle t
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

ODE45 tspan

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 18/12/2015 13:13:44
revisa linea por linea tu código y trata de ver que hace cada linea, se que se demora pero al final puedes hacerlo. Allí esta el proceso de aprendizaje. Todos aprendemos en el foro.
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

ODE45 tspan

Publicado por Maria (27 intervenciones) el 20/12/2015 09:46:32
Esa respuesta no es válida...la respuesta que me has dado ya la conozco,es trivial, si acudo al foro es porque he revisado el codigo mil veces y no consigo terminarlo..no me ha servido en absoluto de ayuda, entonces no hagais un foro de ayuda..
Un saludo y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar