Resolviendo ecuaciones diferenciales con algunos valores constantes.
Publicado por Luis (1 intervención) el 14/12/2018 13:08:18
El problema es el siguiente:
Supongamos que vamos a resolver las siguientes ecuaciones diferenciales:
dgdt= -Vg * X ;
dxdt= Vx * X ;
en donde,
Vg = (G/0.1+G);
Vx = 0.1*Vg^2;
Xo=0.1;
Go=2.0;
Las ecuaciones diferenciales se resolverían en el intervalo de tiempo t=[0 21] en horas.
Hasta ahí todo es sencillo, pero lo que que quisera lograr resolver es que el término Vx se evaluara solo cada 0.25h y se mantuviera consntate hasta el siguiente intervalo de tiempo, digamos que cuando,
t=0 , se evalue Vx con el respectivo valor de Vg en el tiempo 0 y que Vx se mantenga constante hasta el siguente intervalo de tiempo.
t=0.25, se evalue Vx con el respectivo valor de Vg en el tiempo 0.25 y que Vx se mantenga constante hasta el siguente intervalo de tiempo.
t=0.50, se evalue Vx con el respectivo valor de Vg en el tiempo 0.50 y que Vx se mantenga constante hasta el siguente intervalo de tiempo.
.
.
.
.
.
asi sucesivamente hasta,
t=21
Para resolver el problema creé dos scritps:
El primero donde resuelvo con ODE25s la ecuación diferencial:
Y el segundo, llamado dcdt, en donde escribo las ecuaciones diferenciales:
Yo había pensando el la solución descrita en el código pero no funciona. De pronto alguna sugerencia que me ayuda a resolver dicho problema.
Muchas pero muchas gracias de antemano,
Att,
Luis
Supongamos que vamos a resolver las siguientes ecuaciones diferenciales:
dgdt= -Vg * X ;
dxdt= Vx * X ;
en donde,
Vg = (G/0.1+G);
Vx = 0.1*Vg^2;
Xo=0.1;
Go=2.0;
Las ecuaciones diferenciales se resolverían en el intervalo de tiempo t=[0 21] en horas.
Hasta ahí todo es sencillo, pero lo que que quisera lograr resolver es que el término Vx se evaluara solo cada 0.25h y se mantuviera consntate hasta el siguiente intervalo de tiempo, digamos que cuando,
t=0 , se evalue Vx con el respectivo valor de Vg en el tiempo 0 y que Vx se mantenga constante hasta el siguente intervalo de tiempo.
t=0.25, se evalue Vx con el respectivo valor de Vg en el tiempo 0.25 y que Vx se mantenga constante hasta el siguente intervalo de tiempo.
t=0.50, se evalue Vx con el respectivo valor de Vg en el tiempo 0.50 y que Vx se mantenga constante hasta el siguente intervalo de tiempo.
.
.
.
.
.
asi sucesivamente hasta,
t=21
Para resolver el problema creé dos scritps:
El primero donde resuelvo con ODE25s la ecuación diferencial:
1
2
3
4
5
6
clear all; close all; clc;
Xo= 0.1;
Go= 2.0;
[ts,c_est]=ode15s('dcdt',[0 21],[Xo Go]);
Y el segundo, llamado dcdt, en donde escribo las ecuaciones diferenciales:
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
function [dc_dt]=dcdt(t,c)
X=c(1);
G=c(2);
Vg = (G/0.1+G);
%%% aqui yo hbía pensado algo como (pero efectivamente no funciona):
jump=0.25;
tv=0:jump:21;
ind = max((find(tv <= t)));
if t==tv(ind)
Vx = 0.1*Vg^2;
end
dgdt= -Vg * X ;
dxdt= Vx * X ;
dc_dt=[dx_dt; dg_dt];
end
Yo había pensando el la solución descrita en el código pero no funciona. De pronto alguna sugerencia que me ayuda a resolver dicho problema.
Muchas pero muchas gracias de antemano,
Att,
Luis
Valora esta pregunta
0