J'utilise pour résoudre une fonction ode simple. Le code est donné ci-dessous.Comment faire passer la valeur dépendant du temps dans Ode45 dans matlab
function window_sine
% Some constant values to be used later in the code.............
epsilon0=8.85*10^-12;
d_mos=0.65*10^-9;
epsilon_mos_min=5*epsilon0;
epsilon_mos_max=20*epsilon0;
d_g=10*10^-9;
epsilon_g=30*epsilon0;
epsilon_mos=5*epsilon0;
vt=0;
e=1.6*10^-19;
n=[];
i=1;
u=30; % cm^2/v*S
h=1.05*10^-34; % j*s
cond_d=e^2/h;
%tIME Step...........
step=0.1;
t = 0:step:10;
%Some other constant values..simple..............
c_g=(epsilon_g/d_g);
c_mos=(epsilon_mos/d_mos);
c_t=1/((1/c_g)+(1/c_mos));
% This below equation involves time "t" which is defined above.
vs=(1-(c_t/c_g))*t;
%ode function calling............
p0=0.01;
[t,p] = ode45(@state,t,p0);
%plotting the result..................
figure
plot(t,p)
title('State Variable')
%Now the Ode45 function.................
function dpdt = state(t,p)
nc=6.8*10^12;
smooth=1;
vg=t;
k=10^-1;
window1=1-((2*p)-1).^(2*smooth);
% How to incorporate the time dependent "n" value here..........
dpdt=k*(n-nc)*window1;
end
end
Maintenant, le problème est "n" dans la fonction. son temps dépend et sa valeur peut être calculée séparément en utilisant le code suivant. En court, la valeur de "n" augmente linéairement avec le "t". Il est à noter que "t" est le même partout, le temps utilisé en dérivée.
Le problème est de savoir comment incorporer cette valeur "n" dépendante du temps dans ma fonction ode où j'ai écrit "n". ? Où écrire cette partie de code, dans le bloc fonctionnel ou dans le code principal? Merci