Circuit RL

Description du problème et étude préliminaire

On étudie le dispositif illustré par la figure suivante : un circuit RL alimenté par une source de tension continue E via un interrupteur. On ferme l'interrupteur à l'instant \(t=0\), et on cherche à calculer l'établissement du courant dans le circuit (et donc la tension au bornes de la résistance).

Les valeurs numériques des différentes grandeurs sont :

  • E = 200 V

  • L = 10 mH

  • R = 10 Ω

Question

Donner l'équation différentielle à laquelle obéit le courant, et sa condition initiale.

Question

Résoudre analytiquement l'équation précédente.

Implantation sous Matlab ou Octave

Dans la suite, nous allons utiliser un des deux logiciels pour tracer cette solution analytique. Ouvrez celui que vous avez choisi et enregistrez un nouveau script (on l’appellera par exemple CircuitRL.m)

Pour commencer le script, on procède à un petit nettoyage après un en-tête rapide (les "%" permettent d'ajouter des commentaires) :

CTRL+C pour copier, CTRL+V pour coller
1
% Fichier CircuitRL.m correspondant au 1er exercice du TP
2
%  Circuit RL soumis a un echelon de tension
3
4
clear       % Nettoyage du Workspace
5
close all   % Fermeture des fenetres restees ouvertes
6
clc         % Nettoyage du terminal de commande
7
 
% Fichier CircuitRL.m correspondant au 1er exercice du TP
%  Circuit RL soumis a un echelon de tension

clear       % Nettoyage du Workspace
close all   % Fermeture des fenetres restees ouvertes
clc         % Nettoyage du terminal de commande
 

On définit ensuite les grandeurs du problème (les ";" clôturent l'instruction courante et évitent un affichage dans le terminal de commande) :

CTRL+C pour copier, CTRL+V pour coller
1
L = 100e-3;  % H
2
R = 10;     % Ohm
3
E = 200;    % V (~ 2*sqrt(2)/pi*230) 
4
5
t_ini = 0;       % instant initial
6
t_fin = 10*L/R;  % instant final = 10 fois la constante de temps 
L = 100e-3;  % H
R = 10;     % Ohm
E = 200;    % V (~ 2*sqrt(2)/pi*230) 

t_ini = 0;       % instant initial
t_fin = 10*L/R;  % instant final = 10 fois la constante de temps 

Nous devons ensuite définir 2 vecteurs pour pouvoir tracer la solution analytique :

  • celui contenant les valeurs de temps (t_ana) ;

  • celui contenant les valeurs de courant correspondantes (i_ana). On utilisera la notation vectorielle pour simplifier l'écriture, d'où le ".*" devant "t_ana" pour effectuer une opération terme à terme.

CTRL+C pour copier, CTRL+V pour coller
1
npoints_ana = 10000;                           % nombre de points utilisés pour le trace
2
t_ana = t_ini:(t_fin-t_ini)/(npoints_ana-1):t_fin;  % vecteur de temps 
3
i_ana = E/R*(1-exp(-R/L.*t_ana));                   % valeurs de courant correspondantes
npoints_ana = 10000;                           % nombre de points utilisés pour le trace
t_ana = t_ini:(t_fin-t_ini)/(npoints_ana-1):t_fin;  % vecteur de temps 
i_ana = E/R*(1-exp(-R/L.*t_ana));                   % valeurs de courant correspondantes

On crée ensuite une figure pour le tracé de i_ana en fonction de t_ana :

CTRL+C pour copier, CTRL+V pour coller
1
figure(1)                                    % nouvelle figure 1
2
plot(t_ana,i_ana,'b-','LineWidth',2)         % trace avec une ligne d'epaisseur 2
3
grid on                                      % affiche la grille
4
xlabel('Temps (en sec)')                     % label des abscisses
5
ylabel('Courant (en A)')                     % label des ordonnees 
6
title('Solution analytique')                 % titre de la figure 
7
axis([t_ini, t_fin, 0, round(max(i_ana))+1]) % echelle des axes
figure(1)                                    % nouvelle figure 1
plot(t_ana,i_ana,'b-','LineWidth',2)         % trace avec une ligne d'epaisseur 2
grid on                                      % affiche la grille
xlabel('Temps (en sec)')                     % label des abscisses
ylabel('Courant (en A)')                     % label des ordonnees 
title('Solution analytique')                 % titre de la figure 
axis([t_ini, t_fin, 0, round(max(i_ana))+1]) % echelle des axes

On obtient alors la figure :

Question

Mettre le problème sous forme résolue et implanter la méthode d'Euler dans le fichier *.m pour calculer les vecteurs t_euler et i_euler contenant les résultats correspondants.

Tracé des nouveaux résultats

On va modifier la figure courante pour rajouter le tracé de i_euler en fonction de t_euler :

CTRL+C pour copier, CTRL+V pour coller
1
hold on                 % on rajoute le trace sur la figure courante 
2
plot(t_euler,i_euler,'g','LineWidth',2)     % trace avec une ligne verte 
3
title('Comparaison analytique / Euler')     % modification du titre de la figure 
hold on                 % on rajoute le trace sur la figure courante 
plot(t_euler,i_euler,'g','LineWidth',2)     % trace avec une ligne verte 
title('Comparaison analytique / Euler')     % modification du titre de la figure 

Question

Mettre en œuvre la méthode de Runge-Kutta 4 pour calculer aussi t_RK4 et i_RK4.

Tracé final

On rajoute le dernier tracé et une légende

CTRL+C pour copier, CTRL+V pour coller
1
plot(t_RK4,i_RK4,'r','LineWidth',2)                              % en rouge
2
title('Comparaison analytique / Euler / RK4 (sur circuit RL)')
3
legend('Analytique','Euler','RK4','Location','SouthEast')        % légende en bas à droite (sud-est)
plot(t_RK4,i_RK4,'r','LineWidth',2)                              % en rouge
title('Comparaison analytique / Euler / RK4 (sur circuit RL)')
legend('Analytique','Euler','RK4','Location','SouthEast')        % légende en bas à droite (sud-est)

On obtient alors :

Question

Tester et comparer les performances des méthodes en modifiant le pas de calcul (en modifiant la valeur du nombre de pas n).