Résolution d'une équation différentielle du premier ordre

Résolution d'une équation différentielle du premier ordre

La Méthode

Equation différentielle à résoudre :

τdy(t)dt+y(t)=x(t) \boxed{ \tau \frac{dy(t)}{dt}+y(t)=x(t) }

On cherche la solution y(t), pour x(t)=E entrée constante.
Cette solution est la somme :

  • d’une solution en régime permanent
  • d’une solution en régime transitoire.

y(t)=yper(t)+ytr(t) y(t)=y_{per}(t) + y_{tr}(t)

Régime Permanent

yper(t)=y(t+) y_{per}(t)=y(t\rightarrow +\infty)

Passé le transitoire, s sera de même forme que l’entrée, soit ICI une constante :

y(t)=AτdAdt+A=EA=E y(t) = A \rightarrow \tau \frac{dA}{dt} + A=E \rightarrow A=E

Régime Transitoire (ou libre)

On considère une entrée de forçage nulle, dans ce cas :

τdytr(t)dt+ytr(t)=0ytr(t)=Betτ \tau \frac{dy_{tr}(t)}{dt}+y_{tr}(t)=0 \rightarrow y_{tr}(t)=B e^{\frac{-t}{\tau}}

La solution de l’équation correspondante est :

ytr(t)=Betτ y_{tr}(t)=B e^{\frac{-t}{\tau}}

Conclusion :

y(t)=yper(t)+ytr(t)=E+Betτ y(t)=y_{per}(t) + y_{tr}(t)=E+B e^{\frac{-t}{\tau}}

Détermination de B : condition initiale à t=0. Hypothèse : ici s(0)=0

y(0)=0=E+BB=E y(0)=0=E+B \rightarrow B=-E

y(t)=E(1etτ) \boxed{ y(t)=E(1-e^{\frac{-t}{\tau}}) }


Application : Circuit RC (Charge)

circuitRC.svg

On souhaite visualiser la tension vs(t) v_{s}(t) aux bornes du condensateur, en réponse à un échelon de tension sur ve(t) v_{e}(t)

ve(t)=E v_{e}(t)=E .

Le Condensateur est initialement déchargé vs(0)=0 v_{s}(0)=0 .

Recherche de l’Equation

Application de la loi des mailles : ve(t)=R.i(t)+vs(t) v_{e}(t) = R.i(t)+v_{s}(t)

Dans un condensateur q(t)=C.vs(t) q(t) = C.v_{s}(t)
Le courant est un débit de charges i(t)=dq(t)dt i(t)=\frac{dq(t)}{dt}
d’où i(t)=C.dvs(t)dt i(t)=C.\frac{dv_{s}(t)}{dt}

Equation différentielle à résoudre :

R.C.dvs(t)dt+vs(t)=ve(t) \boxed{ R.C.\frac{dv_{s}(t)}{dt}+v_{s}(t) = v_{e}(t) }

On note τ=R.C \tau = R.C

Régime Permanent

ve(t) v_{e}(t) est une constante E.
Passé le transitoire, vc(t) v_{c}(t) sera également une constante, notée A. A répond à l’équation :

τ.Adt+A=E>A=E \tau.\frac{A}{dt}+A = E --> A=E

vsper(t)=E v_{s_{per}}(t) = E

Régime Transitoire

On considère une entrée de forçage nulle, dans ce cas :

τdvstr(t)dt+vstr(t)=0vstr(t)=Betτ \tau \frac{dv_{s_{tr}}(t)}{dt}+v_{s_{tr}}(t)=0 \rightarrow v_{s_{tr}}(t)=B e^{\frac{-t}{\tau}}

La solution de l’équation correspondante est :

vstr(t)=Betτ v_{s_{tr}}(t)=B e^{\frac{-t}{\tau}}

Conclusion

vs(t)=vsper(t)+vstr(t)=E+Betτ v_{s}(t)=v_{s_{per}}(t) + v_{s_{tr}}(t)=E+B e^{\frac{-t}{\tau}}

Détermination de B : condition initiale à t=0. Hypothèse : ici vs(0)=0 v_{s}(0)=0 (Condensateur déchargé)

vs(0)=0=E+BB=E v_{s}(0)=0=E+B \rightarrow B=-E

vs(t)=E(1etτ) \boxed{ v_{s}(t)=E(1-e^{\frac{-t}{\tau}}) }

charge.svg


Application : Circuit RC (Décharge)

vs(0)=E v_{s}(0)=E On applique Une tension nulle sur ve(t) v_{e}(t) .

Régime Permanent

ve(t) v_{e}(t) est une constante nulle.
Passé le transitoire, vc(t) v_{c}(t) sera également une constante, notée A. A répond à l’équation :

τ.Adt+A=0>A=0 \tau.\frac{A}{dt}+A = 0 --> A=0

vsper(t)=0 v_{s_{per}}(t) = 0

Régime Transitoire

On considère une entrée de forçage nulle, dans ce cas :

τdvstr(t)dt+vstr(t)=0vstr(t)=Betτ \tau \frac{dv_{s_{tr}}(t)}{dt}+v_{s_{tr}}(t)=0 \rightarrow v_{s_{tr}}(t)=B e^{\frac{-t}{\tau}}

La solution de l’équation correspondante est :

vstr(t)=Betτ v_{s_{tr}}(t)=B e^{\frac{-t}{\tau}}

Conclusion

vs(t)=vsper(t)+vstr(t)=0+Betτ v_{s}(t)=v_{s_{per}}(t) + v_{s_{tr}}(t)= 0 +B e^{\frac{-t}{\tau}}

Détermination de B : condition initiale à t=0. Hypothèse : ici vs(0)=E v_{s}(0)=E

vs(0)=E=0+BB=E v_{s}(0)=E=0+B \rightarrow B=E

vs(t)=E.etτ \boxed{ v_{s}(t)=E.e^{\frac{-t}{\tau}} }

decharge.svg


Et si l’entrée n’est pas constante ?

On souhaite visualiser la tension vs(t) v_{s}(t) aux bornes du condensateur, en réponse à une rampe de tension ve(t) v_{e}(t)

ve(t)=E.t v_{e}(t)=E.t .

Le Condensateur est initialement déchargé vs(0)=0 v_{s}(0)=0 .

Régime Permanent

ve(t) v_{e}(t) est une rampe passé le transitoire, vc(t) v_{c}(t) sera également une rampe, notée K1.t+K2 K_{1}.t + K_{2}
vs(t) v_{s}(t) répond à l’équation :

τ.d(K1.t+K2)dt+K1.t+K2=E.t \tau.\frac{d(K_{1}.t + K_{2})}{dt}+ K_{1}.t + K_{2} = E.t

τ.K1+K1.t+K2=E.t \tau.K_{1}+ K_{1}.t + K_{2} = E.t

Par identification des coefficients du polynome :

  • K1=E K_{1} = E
  • K2+τ.K1=0K2=τ.E K_{2} + \tau.K_{1} = 0\rightarrow K_{2} = - \tau.E

vsper(t)=E(tτ) v_{s_{per}}(t) = E (t - \tau)

Régime Transitoire

On considère une entrée de forçage nulle, dans ce cas :

τdvstr(t)dt+vstr(t)=0vstr(t)=Betτ \tau \frac{dv_{s_{tr}}(t)}{dt}+v_{s_{tr}}(t)=0 \rightarrow v_{s_{tr}}(t)=B e^{\frac{-t}{\tau}}

La solution de l’équation correspondante est :

vstr(t)=Betτ v_{s_{tr}}(t)=B e^{\frac{-t}{\tau}}

Conclusion

vs(t)=vsper(t)+vstr(t)=E(tτ)+Betτ v_{s}(t)=v_{s_{per}}(t) + v_{s_{tr}}(t)= E (t - \tau) +B e^{\frac{-t}{\tau}}

Détermination de B : condition initiale à t=0. Hypothèse : ici vc(0)=0 v_{c}(0)=0

vs(0)=0=τ.E+BB=τ.E v_{s}(0) = 0 = - \tau.E + B \rightarrow B=\tau.E

vs(t)=E.t+τ.E(etτ1) \boxed{ v_{s}(t)=E.t + \tau.E(e^{\frac{-t}{\tau}}-1) }

rampe.svg


Et si l’entrée est une sinusoïde ?

Régime Permanent

Entrée sinusoïdale –> Sortie sinusoïdale déphasée et atténuée.

ve(t)=Ve.sinωt>vsper(t)=Vs(ω).sin(ωt+Φ(ω)) v_{e}(t) = V_e.sin\omega t --> v_{s_{per}}(t) = V_s(\omega).sin(\omega t+\Phi(\omega))

Impédances Complexes ( cf Signaux Sinus )

Pont diviseur de tension :

vsper(t)=ve(t).zCR+zC v_{s_{per}}(t)= v_{e}(t) . \frac{\overline{z_C}}{R + \overline{z_C}}
vsper(t)=ve(t).11+jRCω v_{s_{per}}(t)= v_{e}(t) . \frac{1}{1 + jRC\omega}

Fonction de Transfert :

T(jω)=vsper(t)ve(t)=11+jRCω \overline{T(j\omega)}=\frac{v_{s_{per}}(t)}{v_{e}(t)}=\frac{1}{1 + jRC\omega}

vsper(t)=Vs=VeT(jω) \mid v_{s_{per}}(t) \mid = V_s = V_e \mid \overline{T(j\omega)} \mid
Vs=Ve.11+(ωω0)2 V_s = V_e. \frac{1}{\sqrt{1 + \left ( \frac{\omega}{\omega_0} \right )^{2} } } avec ω0=1τ=1RC \omega_0=\frac{1}{\tau}=\frac{1}{RC}

Φ(ω)=arg(11+jRCω) \Phi(\omega)=arg \left( \frac{1}{1 + jRC\omega} \right )
Φ(ω)=arctan(ωω0) \Phi(\omega)=-\arctan(\frac{\omega}{\omega_0})

vsper(t)=Ve.11+(ωω0)2.sin(ωtarctan(ωω0)) v_{s_{per}}(t)= V_e. \frac{1}{\sqrt{1 + \left ( \frac{\omega}{\omega_0} \right )^{2}}} .sin\left(\omega t-\arctan(\frac{\omega}{\omega_0})\right)

Régime Transitoire

On considère une entrée de forçage nulle, dans ce cas :

τdvstr(t)dt+vstr(t)=0vstr(t)=Betτ \tau \frac{dv_{s_{tr}}(t)}{dt}+v_{s_{tr}}(t)=0 \rightarrow v_{s_{tr}}(t)=B e^{\frac{-t}{\tau}}

La solution de l’équation correspondante est :

vstr(t)=Betτ v_{s_{tr}}(t)=B e^{\frac{-t}{\tau}}

Conclusion

vs(t)=vsper(t)+vstr(t)=Ve.11+(ωω0)2.sin(ωtarctan(ωω0))+Betτ v_{s}(t)=v_{s_{per}}(t) + v_{s_{tr}}(t)= V_e. \frac{1}{\sqrt{1 + \left ( \frac{\omega}{\omega_0} \right )^{2}}} .sin\left(\omega t-\arctan(\frac{\omega}{\omega_0})\right) + B e^{\frac{-t}{\tau}}

Détermination de B : condition initiale à t=0. Hypothèse : ici vc(0)=0 v_{c}(0)=0

vs(0)=0=Ve.11+(ωω0)2.sin[arctan(ωω0)]+B v_{s}(0) = 0 =V_e.\frac{1}{\sqrt{1 + \left ( \frac{\omega}{\omega_0} \right )^{2}}} .sin\left[-\arctan(\frac{\omega}{\omega_0})\right] + B

sin[arctan(x)]=x1+x2 \sin\left[-arctan(x)\right]=\frac{-x}{\sqrt{1+x^2}}

vs(0)=0=Ve.11+(ωω0)2.ωω01+(ωω0)2+B v_{s}(0) = 0 =V_e.\frac{1}{\sqrt{1 + \left ( \frac{\omega}{\omega_0} \right )^{2}}} .\frac{-\frac{\omega}{\omega_0}}{\sqrt{1 + \left ( \frac{\omega}{\omega_0} \right )^{2}}} + B

vs(0)=0=Ve.11+(ωω0)2.ωω01+(ωω0)2+B v_{s}(0) = 0 =V_e.\frac{1}{\sqrt{1 + \left ( \frac{\omega}{\omega_0} \right )^{2}}} .\frac{-\frac{\omega}{\omega_0}}{\sqrt{1 + \left ( \frac{\omega}{\omega_0} \right )^{2}}} + B

B=Ve.(ωω0)1+(ωω0)2 B=V_e.\frac{ \left ( \frac{\omega}{\omega_0} \right ) }{1+\left ( \frac{\omega}{\omega_0} \right )^2}

vs(t)=Ve.11+(ωω0)2.sin(ωtarctan(ωω0))+Ve.(ωω0)1+(ωω0)2etτ) \boxed{ v_{s}(t)= V_e. \frac{1}{\sqrt{1 + \left ( \frac{\omega}{\omega_0} \right )^{2}}} .sin\left(\omega t-\arctan(\frac{\omega}{\omega_0})\right) + V_e.\frac{ \left ( \frac{\omega}{\omega_0} \right ) }{1+\left ( \frac{\omega}{\omega_0} \right )^2} e^{\frac{-t}{\tau}} ) }

Essai pour f=500 Hz

sinus_1.svg

Essai pour ω=ω0 \omega = \omega _0

sinus_2.svg


Script Scilab pour générer les figures ci dessus

equa_diff.sce
//============================================================================//
//                          SYSTEME DU PREMIER ORDRE
//============================================================================//

R=10e3
C=100e-9
to=R*C

num = 1;                            // numérateur de la fonction de transfert
den = poly([1 to],'p','c');         // denominateur de la fonction de transfert (1+to.s)
H_s= syslin('c',num,den);
//******************************************************************************
//                          Réponse indicielle
//******************************************************************************
//clf()                   // Effacement fenêtre courante
h=figure(2)
f=get("current_figure") //get the handle of the current figure :
f.background=8

t_min=0
t_max=0.01
y_min=0
y_max=1.1

temps=linspace(0,t_max,100);
h=csim('step',temps,H_s);
plot(temps,h,'r');

p = get("hdl");
p.children.thickness = 7;
a=gca()
a.x_location = "origin";
a.y_location = "origin"; 
a.data_bounds=[t_min,t_max,y_min,y_max];
a.font_size=5;          //set the tics label font size
a.grid=[3,3];           // Couleur grille
a.labels_font_color=2;  // Couleur chiffres axes
a.box="off";            // Cadre
xlabel("$t$","fontsize",7,"color","red");
ylabel("$v_{s}(t)$","fontsize",7,"color","red","rotation",0);
title(["$v_{s}(t)=E.(1-\text{e}^{\frac{-t}{\tau}})$";"$R=10K\Omega, C=100nF, \tau=1ms$"],"color","black","fontsize",7);

plot(temps,ones(temps))
p = get("hdl");
p.children.thickness = 3;

//******************************************************************************
//                     Réponse à un signal carré
//******************************************************************************
//clf()       // Effacement fenêtre courante
h=figure(3)
f=get("current_figure") //get the handle of the current figure :
f.background=8

t_min=0
t_max=0.03
y_min=0
y_max=1.1

temps=linspace(0,t_max,10000);
entree=0.5*(squarewave(temps*200)+1)
h=csim(entree,temps,H_s);

plot(temps,h,'r');


p = get("hdl");
p.children.thickness = 7;
a=gca()
a.x_location = "origin";
a.y_location = "origin"; 
a.data_bounds=[t_min,t_max,y_min,y_max];
a.font_size=5;          //set the tics label font size
a.grid=[3,3];           // Couleur grille
a.labels_font_color=2;  // Couleur chiffres axes
a.box="off";            // Cadre
xlabel("$t$","fontsize",7,"color","red");
ylabel("$v_{s}(t)$","fontsize",7,"color","red","rotation",0);
title(["$v_{s}(t)=E.(1-\text{e}^{\frac{-t}{\tau}}), \quad  v_{c}(t)=E.e^{\frac{-t}{\tau}}$";"$R=10K\Omega, C=100nF, \tau=1ms$"],"color","black","fontsize",7);


//plot(temps,squarewave(temps))
plot(temps,entree)
p = get("hdl");
p.children.thickness = 3;

//******************************************************************************
//                     Réponse à une rampe
//******************************************************************************

//clf()       // Effacement fenêtre courante
h=figure(4)
f=get("current_figure") //get the handle of the current figure :
f.background=8

t_min=0
t_max=0.009
y_min=0
y_max=0.009

temps=linspace(0,t_max,100);
h=csim(temps,temps,H_s);
plot(temps,h,'r');

p = get("hdl");
p.children.thickness = 7;
a=gca()
a.x_location = "origin";
a.y_location = "origin"; 
a.data_bounds=[t_min,t_max,y_min,y_max];
a.font_size=5;          //set the tics label font size
a.grid=[3,3];           // Couleur grille
a.labels_font_color=2;  // Couleur chiffres axes
a.box="off";            // Cadre
xlabel("$t$","fontsize",6,"color","red");
ylabel("$v_{s}(t)$","fontsize",6,"color","red","rotation",0);
title(["$v_{s}(t)=E.(1-\text{e}^{\frac{-t}{\tau}})$";"$R=10K\Omega, C=100nF, \tau=1ms$"],"color","black","fontsize",6);

plot(temps,temps)
p = get("hdl");
p.children.thickness = 3;

//******************************************************************************
//                     Réponse à une sinusoide
//******************************************************************************

//clf()       // Effacement fenêtre courante
h=figure(4)
f=get("current_figure") //get the handle of the current figure :
f.background=8

t_min=0
t_max=0.009
y_min=0
y_max=0.009

freq=500
omega=2*%pi*freq
omega=1000

temps=linspace(0,t_max,100);
entree=(sin(omega*temps))
h=csim(entree,temps,H_s);
plot(temps,h,'r');

p = get("hdl");
p.children.thickness = 7;
a=gca()
a.x_location = "origin";
a.y_location = "origin"; 
a.data_bounds=[t_min,t_max,y_min,y_max];
a.font_size=5;          //set the tics label font size
a.grid=[3,3];           // Couleur grille
a.labels_font_color=2;  // Couleur chiffres axes
a.box="off";            // Cadre
xlabel("$t$","fontsize",6,"color","red");
ylabel("$v_{s}(t)$","fontsize",6,"color","red","rotation",0);
title(["$v_{s}(t)=  V_e.  \frac{1}{\sqrt{1 + \left (  \frac{\omega}{\omega_0} \right )^{2}}} .sin(\omega t-\arctan(\frac{\omega}{\omega_0}))  + V_e.\frac{  \left ( \frac{\omega}{\omega_0}  \right )  }{1+\left (  \frac{\omega}{\omega_0} \right )^2} e^{\frac{-t}{\tau}}$";"$\omega=3142, R=10K\Omega, C=100nF, \tau=1ms, \omega_0=1000rad/s $"],"color","black","fontsize",6);

plot(temps,entree)
p = get("hdl");
p.children.thickness = 3;

// Export to svg
xs2svg(f,'fig.svg')