Matlab - For para ode45

 
Vista:

For para ode45

Publicado por Cristian (5 intervenciones) el 31/07/2013 18:49:11
Hola amigos del foro, tengo este problema. Estoy resolviendo una ecuación diferencial por ode45 pero necesito poner eso dentro de un for, hasta ahora tengo lo que pego mas abajo, resulta que el ode45 pide una condición inicial y pues necesito que en el siguiente paso del for, el resultado inmediatamente anterior del ode45 ([t,x]) sea la condición inicial de ese siguiente.

for ...

[t,x]=...;

if pwm2==24

rango=(0:0.1:100);
[t,x]=ode45('boost1',rango,[0;0]);

else
rango=(0:0.1:100);
[t,x]=ode45('boost2',rango,[0;0]);

end

end

plot(t,x)
grid

Al final pues graficar esa salida, la verdad no veo como tomar ese resultado del ode45 y decirle !HEY¡ esta es ahora tu nueva condición inicial.

Lo del if es un valor que me da un código de pwm que está antes del for, ese pwm me da 0 ó 24 como salida y esa la tomo para calcular el ode45.

Gracias de antemano a quien me pueda colaborar!
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

For para ode45

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 31/07/2013 21:03:46
Cual es tu enunciado matemático de tu pregunta?.
Cual es la EDO de las cual quieres hallar la solución numérica?.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]


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

For para ode45

Publicado por Cristian (5 intervenciones) el 31/07/2013 21:21:07
Son las ecuaciones de un convertidor DC-DC elevador (boost), no sé como mostrarte la manera en que se modela este dispositivo. No veo aquí como subir un archivo donde tengo el modelo matemático.
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

For para ode45

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 31/07/2013 22:50:27
Que son boost1 y boost2?.
No des por cierto, tienes explicar en detalle tu pregunta. Recuerda de que uno conozca de matlab no indica que uno conozca todas las disciplinas. Al parecer tu eres electrónico y yo no soy electrónico.
Trata de explicar con detalle tus preguntas y seguro obtendrás una respuesta. Pero si no eres claro en tus preguntas y no brindas suficiente informacion, simplemente tu pregunta se va a quedar sin respuesta.
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

For para ode45

Publicado por Cristian (5 intervenciones) el 31/07/2013 23:32:11
Bueno voy a intentarlo mejor!

Estoy tratando de resolver un circuito electrónico llamado elevador de tensión. Este dispositivo está descrito por las ecuaciones presentes en los links de arriba. Este posee dos estados uno es On y el otro es Off y cada estado presenta ecuaciones diferenciales un poco diferentes, las que he llamado como función 'boost1' y 'boost2' . Por ejemplo este es boost2 (Off state):

function F=boost2(t,x)
C= 1.16e-3; %Valor del condensador
R= 20e3; %Valor de la resistencia
L= 0.16e-3; %Valor de la Inductancia
Vs= 12; %tensión de entrada

A=[0,-(1/L) ; (1/C),-(1/(R*C))];

B=[(1/L) ; 0];

u=Vs;

F=A*x+B*u;

Boost 1 es similar. Estas ecuaciones fueron acomodadas como una ecuación de estados. Las matrices A y B son la matriz de estados y la de entrada y F es la ecuación de estados.

Este circuito está gobernado por un control, el cual según su salida 0 ó 24 debo elegir desarrollar el estado On ó el estado Off, por eso tengo ese IF.

Sé que con ODE45 puedo resolver una ecuación diferencial, una sola vez. Pero yo necesito que se calcule varias veces según se escoja el IF y graficar eso en el tiempo. Es por eso que creo que necesito un FOR.
No sé como tomar el resultado del ode45 para que en el siguiente paso del FOR esa sea la nueva condición inicial del ode45.
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

For para ode45

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 01/08/2013 00:07:20
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
function ode45caballero12
 
%  Estoy tratando de resolver un circuito electrónico llamado elevador de 
%  tensión. Este dispositivo está descrito por las ecuaciones presentes en 
%  los links de arriba. Este posee dos estados uno es On y el otro es Off y
%  cada estado presenta ecuaciones diferenciales un poco diferentes, las 
%  que he llamado como función 'boost1' y 'boost2' . Por ejemplo este es 
%  boost2 (Off state):
% 
%  function F=boost2(t,x)
%  C= 1.16e-3; %Valor del condensador
%  R= 20e3; %Valor de la resistencia
%  L= 0.16e-3; %Valor de la Inductancia
%  Vs= 12; %tensión de entrada
%  A=[0,-(1/L) ; (1/C),-(1/(R*C))];
%  B=[(1/L) ; 0];
%  u=Vs;
%  F=A*x+B*u;
%  
%  Boost 1 es similar. Estas ecuaciones fueron acomodadas como una ecuación
%  de estados. Las matrices A y B son la matriz de estados y la de entrada
%  y F es la ecuación de estados. 
% 
%  Este circuito está gobernado por un control, el cual según su salida
%  0 ó 24 debo elegir desarrollar el estado On ó el estado Off, por eso 
%  tengo ese IF. 
% 
%  Sé que con ODE45 puedo resolver una ecuación diferencial, una sola vez.
%  Pero yo necesito que se calcule varias veces según se escoja el IF y
%  graficar eso en el tiempo. Es por eso que creo que necesito un FOR. 
%  No sé como tomar el resultado del ode45 para que en el siguiente paso
%  del FOR esa sea la nueva condición inicial del ode45.
 
 
global C R L  Vin
C= 1.16e-3; %Valor del condensador
R= 20e-3; %Valor de la resistencia
L= 0.16e-3; %Valor de la Inductancia
Vin= 12; %tensión de entrada
I= [0 1];
y0= [0 0];
fprintf('CONDICIONES:\n')
fprintf('\nEJEMPLO: C=1.16e-3   R= 20e-3  L= 0.16e-3   Vn= 12   I= [0 10]    y0= [0 0]\n\n')
% C=input('Ingrese el valor de Condensador C: ');
% R=input('Ingrese el valor de Resistencia R: ');
% L=input('Ingrese el valor de la Inductancia L: ');
% Vn=input('Ingrese el valor de tension de entrada Vn: ');
% I=input('Ingrese el intervalo I=');
% y0=input('Ingrese condicion inicial y0=');
[t,y]=ode45(@elevando_tension1,[I(1) I(2)],[y0(1) y0(2)]);
figure(gcf)
plot(t,y(:,1), t,y(:,2));
end
 
 
function dydt=elevando_tension1(t,y)
global L  Vin C R
dydt=zeros(2,1);
dydt(1)=-(1/L)*y(1)+ (1/L)*Vin;    %  diL/dt= -(1/L)*Vc +(1/L)*Vin 
dydt(2)=(1/C)*y(1)-(1/(R*C))*y(2);  %  dVc/dt=(1/C)*iL-(1/(R*C))*Vc
end


1
2
3
4
>> ode45caballero12
CONDICIONES:
 
EJEMPLO: C=1.16e-3   R= 20e-3  L= 0.16e-3   Vn= 12   I= [0 10]    y0= [0 0]


Adáptalo para lo que quieres, la parte de ODE ya está resuelto.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]


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

For para ode45

Publicado por Cristian (5 intervenciones) el 02/08/2013 05:30:21
Muchas gracias Jose Caballero, intentaré hacer la adaptación.
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