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
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) :
% 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
% 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) :
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
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.
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
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 :
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
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
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 :
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
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
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)
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)
Question
Tester et comparer les performances des méthodes en modifiant le pas de calcul (en modifiant la valeur du nombre de pas n).