Etude du redressement monoalternance
Contents
La page ci-présente existe en version notebook téléchargeable grâce au bouton
(choisir le format .ipynb). On rappelle qu’l faut ensuite l’enregistrer dans un répertoire adéquat sur votre ordinateur (capa_num par exemple dans votre répertoire personnel) puis lancer Jupyter Notebook depuis Anaconda pour accéder au notebook, le modifier et exécutez les cellules de code adéquates.
2.5. Etude du redressement monoalternance#
Nous allons utiliser la méthode précédente pour chercher le point de fonctionnement du circuit précédent à chaque instant \(t\) en supposant que \(E\) varie: \(E(t) = E_0 \cos (2 \pi f t)\) avec \(E_0 = 2 \rm{V}\) et \(f = 50 \rm{Hz}\).
On suppose que les caractéristiques des dipôles restent valables en régime variable de sorte qu’à un instant \(t\), la tension \(u_D\) est donnée par la solution de l’équation:
avec \(I_s = 95 \rm{\mu A}\) et \(V_D = 30 \rm{mV}\) et \(t\) un instant connu.
On va donc devoir réaliser une recherche de racine un grand nombre de fois. Il est donc préférable de mettre la série d’instructions pour déterminer la racine de \(f\) dans une fonction.
2.5.1. Fonction pour résoudre#
Exercice 1:
Importer les bibliothèques
numpyetmatplotlib.pyplotDéfinir une fonction
Esource(t)qui renvoie la valeur de \(E(t)\) pour un instant \(t\) donné en argument et une fonctionf_test(u)qui renvoie la valeur de \(f\) pour une tension \(u\) donnée en argument de la fonction (elle utilisera une valeurEde tension pour la source comme une variable globale, les autres grandeurs Is, VT… peuvent être définie dans la fonctionf_test, cf remarque par la suite).(Si ça na pas été fait précédemment) Tracer la fonction \(f\) entre \([-1,1]\) pour \(t = 0\) (donc \(E = 2\rm{V}\)) et vérifier graphiquement qu’il n’y bien qu’une seule racine dans l’intervalle (Note: On peut démontrer que la fonction est strictement décroissante, on a donc bien unicité de la racine quand elle existe.)
Remarque:
Le code ressemblera donc à ceci:
def Esource(t):
# corps du code si necessaire
return ....
def f_test(u):
# corps du code si necessaire
# La tension E sera notée E sans être définie par exemple :
R = 100
i = (E - u) / R
return i
# Pour utiliser f_test:
E = 1 # Nécessaire
f_test(u)
# On pourra redéfinir E avant chaque appel de f_test si nécessaire
Exercice 2:
Ecrire une fonction
dicho(f,a0,b0,prec)qui va chercher la racine de la fonctionfdans l’intervalle initiale \([a0,b0]\) avec une précisionprecpar la méthode de dichotomie.Tester la fonction avec
f_testet \(E = 2\rm{V}\) et vérifier la cohérence avec ce qu’on obtient graphiquement.
L’argument
fest la fonction doncfouf_test, pas ce qu’elle renvoie (c’est-à-diref(0)ouf_test(1), on a la même différence entre une fonction et l’image d’une fonction).Par contre, à l’intérieur de
dicho. Commefest une fonction, on pourra l’appeler en utilisantf(a),f(1)…Ne pas modifier les valeurs des arguments
a0etb0: il faut les réassigner à deux variables internes à la fonction (aetbpar exemple) et modifier ces deux variables dans la boucle.Il est conseillé de tester initialement si le produit \(f(a0)f(b0)\) est bien négatif et renvoyer
Nonesinon. Cela évitera des résultats absurdes si l’on cherche dans un intervalle où il n’y a pas de racine. Quand vous aurez avancé le cours d’informatique, vous pourrez remplacer ce comportement par une assertion.
2.5.2. Application au redressement monoalternance#
Exercice 3:
Ecrire une suite d’instruction:
Définir un vecteur
E_kqui prendre 1000 valeurs de \(E(t)\) aux instants \(t_k\) équirépartis sur 2 périodes de \(E(t)\).Dans une boucle, pour chaque valeur de \(E_k\), rechercher la tension \(u_D\) correspondant et la stocker dans une liste.
Transformer la liste des tensions
uDen un vecteur puis obtenir les valeurs d’intensités correspondantes \(i(t)\) (pensez aux fonctions vectorialisables pour l’obtenir en une instruction).Obtenir les valeurs de la tension \(uR\) à chaque instant et tracer \(u_R (t)\). Pourquoi parle-t-on de redressement ? monoalternance ?
Note : Réfléchir au choix de l’intervalle de recherche.