TD 5 : Simulation num´erique PC - Lyc´ee Thiers 2014/2015 Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 1 : Enonc´ e Correction Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Enonc´ e Corrig´ e Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Enonc´ e Correction Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Correction PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Exercice 1 : Enonc´ e Correction Exercice 1 : Enonc´e Exercice 1. Circuit RLC en s´ erie. On consid` ere un circuit ´ electrique constitu´ e d’une source de tension V , d’une r´ esistance R, d’une bobine L et d’une capacit´ e C mont´ es en s´ erie. 1. D´ eterminer une ´ equation diff´ erentielle satisfaite par la tension aux bornes de la bobine. 2. Tracer la courbe de la tension aux bornes de la bobine pour V (t) = sin(2πft) sur un intervalle de temps de 1 seconde (on prendra 10000 points) pour f = 100 Hz, R = 10 Ω, L = 870 mH, C = 650 mF. A l’instant initial aux bornes de la bobine la tension est nulle ainsi que sa d´ eriv´ ee. PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Exercice 1 : Enonc´ e Correction Exercice 1 : Correction. 1) Equation diff´ erentielle v´ erifi´ ee par uL . ● Soit i l’intensit´ e (en fonction du temps t). Les tensions aux bornes de la r´ esistance uR , de la bobine uL , et du condensateur uC v´ erifient : uR = Ri, uL = L di , dt i =C duC dt ● Loi des mailles : uR + uL + uC = V . On la d´ erive une premi` ere fois : Ô⇒ Ô⇒ duR + dt di + R dt R uL + L duL duC dV + = dt dt dt duL i dV + = dt C dt duL i dV + = dt C dt On encore d´ erive une seconde fois : R duL d 2 uL 1 di d 2V + + = 2 L dt dt C dt dt 2 PC - Lyc´ ee Thiers Ô⇒ d 2 uL R duL 1 d 2V + + uL = 2 dt L dt LC dt 2 TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Exercice 1 : Enonc´ e Correction Exercice 1 : Correction. ● uL satisfait l’´ equation diff´ erentielle : d 2 uL 1 d 2V R duL . + uL = + dt 2 L dt LC dt 2 C’est une ´ equation diff´ erentielle lin´ eaire du second ordre ` a coefficient constant, avec second membre : ′′ y + R ′ 1 d 2V 2 2 y + y = −4π f sin(2πft) = L LC dt 2 et un probl` eme de Cauchy avec les conditions initiales y (0) = y ′ (0) = 0. ● On l’´ ecrit comme un syst` eme de deux ´ equations diff´ erentielles : ⎧ dy ⎪ ′ ⎪ ⎪ ⎪ ⎪ dt = y en posant Y = ( ⎨ ′ d 2V R 1 dy ⎪ ⎪ ⎪ = − y′ − y ⎪ ⎪ 2 ⎩ dt dt L LC y′ ⎛ ⎞ d d y ⎟ et Y (0) = ( Ô⇒ Y = ( ′ ) = ⎜ d 2V R ′ 1 y dt dt − y − y ⎠ ⎝ dt 2 L LC PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique y ) y′ 0 ) 0 Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Exercice 1 : Enonc´ e Correction Exercice 1 : Correction. 2) R´ esolution. # R L C f Constantes du probl` eme : = 10 # R = 10 Ohms = 0.870 # L = 870 mH = 0.650 # C = 650 mF = 100 # f = 100 Hz # Import des fonctions n´ ecessaires des modules numpy, scipy from numpy import linspace, array, sin, pi from scipy import integrate # Fonction second membre omega = 2 * pi * f phi = lambda Y,t: array([Y[1], -omega**2 *sin(omega*t)-R/L*Y[1]-Y[0]/(L*C)]) # R´ esolution N = 10000 # Nbre d’´ echantillons t = linspace(0,1,10000) y0 = array([0,0]) result = integrate.odeint(phi,y0,t) uL = [ result[i][0] for i in range(N) ] # On r´ ecup` ere la 1` ere colonne # ou plus simplement par slicing : uL = result[: , 0] # Trac´ e plot(t,uL) title(’Tension aux bornes de la bobine’) xlabel(’Temps (s)’); ylabel(’Tension (V)’) PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Exercice 1 : Enonc´ e Correction Exercice 1 : Correction. PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Corrig´ e Exercice 2 : Fonction d´efinie de mani`ere r´ecursive Exercice 2. Fonction d´ efinie de mani` ere r´ ecursive PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Corrig´ e Exercice 2 : Fonction d´efinie de mani`ere r´ecursive 1) def g(x): assert 0 <= x < 2 if x<1: return x else: return 1 ● La fonction ´ etant d´ efinie par disjonction de cas, il est utile de la ”vectoriser” (` a l’aide de np.vectorize() afin de pouvoir l’appliquer ` a un tableau numpy en vue du trac´ e. g v = np.vectorize(g) X = np.arange(0,2,0.01) plt.figure("Exercice 2.1 : Courbe de $g$") plt.clf() Y = g v(X) plt.plot(X,Y) plt.axis([0,2,0,1.5]) plt.title(’Courbe repr´ esentative de $g$’) plt.show() ● Aussi le graphe de la fonction ´ etant ”par pallier”, mieux vaut d´ efinir la fenˆ etre ` a afficher ` a l’aide de plt.axis() pour une bonne lisibilit´ e. PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Corrig´ e Exercice 2 : Fonction d´efinie de mani`ere r´ecursive Ce qui produit : PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Corrig´ e Exercice 2 : Fonction d´efinie de mani`ere r´ecursive 2) D´ efinition de f de mani` ere r´ ecursive : def f(x): assert x >= 0 if x < 2: return g(x) return x**0.5 * f(x-2) 3) Ici encore pour faciliter l’obtention de l’´ echantillonnage de l’image de f on ”vectorise” la fonction : f v = np.vectorize(f) X = np.linspace(0,6,1000) Y = f v(X) plt.figure("Exercice 2.2 : Courbe de $f$") plt.title(’Courbe repr´ esentative de $f$ sur $[0,6]$’) plt.plot(X,Y) plt.show() PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Corrig´ e Exercice 2 : Fonction d´efinie de mani`ere r´ecursive Ce qui produit : PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Corrig´ e Exercice 2 : Fonction d´efinie de mani`ere r´ecursive On remarque que la fonction f est continue et croissante sur [4.5; 5.5] avec f (4.5) < 4 et f (5.5) > 4. On applique donc une recherche par dichotomie ` a f − 4 et l’on retournera un encadrement ` a 10−2 pr` es d’une racine. Le majorant dans l’encadrement nous donnera donc une −2 valeur approch´ ee ` a 10 pr` es (par exc` es) du plus entier r´ eel x pour lequel f (x) > 4. def dichotomie(f,a,b,e): assert f(a)*f(b) <=0 if (b-a) <= e: return a,b m = (a+b)/2 if f(a)*f(m) < 0: return dichotomie(f,a,m,e) else: return dichotomie(f,m,b,e) a,b = dichotomie(lambda x:f(x)-4, 4.5, 5.5, 0.01) In[1] : print(b) Out[1] : 5.125 In[3] : f(5.125) Out[3] : 4.001952648395531 In[4] : f(5.12) Out[4] : 3.9967987189749747 PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Correction Exercice 3 : M´ethode des Trap`ezes Exercice 3. M´ ethode des Trap` ezes appliqu´ ee ` a un ´ echantillonnage ● Le fichier ` a utiliser est ”ex 001.txt” et non ”ex 001.csv”. ● Indication pour le (1) : la m´ ethode chaine.split(’;’) appliqu´ ee ` a la chaine de caract` ere chaine retourne la liste des sous-chaˆ nes d´ elimit´ ees par des caract` eres ’;’. La fonction float() convertit son argument en nombre ` a virgule flottante. PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Correction Exercice 3 : M´ethode des Trap`ezes 1) Utiliser split(’;’) avant de convertir en float : LX, LY = [], [] file = open(’ex 001.txt’, ’r’) for ligne in file: x, y = ligne.split(’;’) LX.append(float(x)) LY.append(float(y)) file.close() 2) On trace les points et des lignes bris´ ees les reliant (motif : ’o-’ de plot()). plt.figure(’Exercice 3’) plt.clf() plt.title(’Exercice 3.2’) plt.plot(LX,LY,’o-’) plt.show() PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Correction Exercice 3 : M´ethode des Trap`ezes Ce qui donne : PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Correction Exercice 3 : M´ethode des Trap`ezes 3) M´ ethode des trap` ezes : def trapeze(x,y): n = len(x) trapz = 0 for i in range(n-1): trapz += (x[i+1]-x[i]) * (y[i+1]+y[i]) /2 return trapz On obtient ainsi : In[1] : trapeze(LX,LY) Out[1] : 1.3187761047555 4) Avec la fonction trapz() : il faut remarquer d’abord que l’´ ecart entre abscisses cons´ ecutives est constant ´ egale ` a 0.1 ! In[2] : from scipy import integrate In[3] : integrate.trapz(LY, dx=0.1) Out[3] : 1.31877610476 PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Correction Exercice 4 : Valeurs propres d’une matrice carr´ee Exercice 4. Calcul des Valeurs propres d’une matrice carr´ ee ● Indication pour le (2) : la fonction shape() de numpy renvoie le type de la matrice sous forme d’un couple. ● Indication pour le (3) : le fichier contient des lignes constitu´ ees de chaines repr´ esentant des listes. La fonction eval() prend en param` etre une chaine de caract` ere et la convertit en la donn´ ee (ou l’instruction) qu’elle repr´ esente : eval(’[1,2]’) retourne la liste [1,2] ; eval("print(’bonjour’)") ´ ecrit bonjour. ● Indication pour le (4) : la fonction eig() de numpy.linalg retourne un couple dont le premier ´ el´ ement est le tableau des valeurs propres, et le deuxi` eme la matrice des vecteurs propres dans Cn (matrice de passage). PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Correction Exercice 4 : Valeurs propres d’une matrice carr´ee 1) R = np.matrix(’1 2 3; 4 5 6’) # ou np.array([[1,2,3],[4,5,6]]) S = np.matrix(’1 2 3; 4 5 6; 7 8 9’) print("R=\n",R) print("S=\n",S) 2) def test(M): (n,p) = np.shape(M) if n==p: return n else: return False In[1] : test(R) Out[1] : False In[2] : test(S) Out[2] : 3 PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Correction Exercice 4 : Valeurs propres d’une matrice carr´ee 3) fichier = open(’ex 009.txt’, ’r’) liste = fichier.readlines() fichier.close() M = [] for x in liste: M.append(eval(x)) M1 = np.array(M) print("M1 = ",M1) print("test sur M1 : ",test(M)) Produit : M1 = [[ 0.33333333 0.16666667 0.16666667 0.16666667 0.16666667] [ 0.16666667 0.33333333 0.16666667 0.16666667 0.16666667] [ 0.16666667 0.16666667 0.33333333 0.16666667 0.16666667] [ 0.16666667 0.16666667 0.16666667 0.33333333 0.16666667] [ 0.16666667 0.16666667 0.16666667 0.16666667 0.33333333]] test sur M1 : 5 PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique Exercice 1 : Etude d’un Circuit RLC avec la fonction odeint() Exercice 2 : Fonction d´ efinie de mani` ere r´ ecursive Exercice 3 : M´ ethode des trap` ezes appliqu´ ee ` a un ´ echantillonnage Exercice 4 : Valeurs propres d’une matrice carr´ ee Enonc´ e Correction Exercice 4 : Valeurs propres d’une matrice carr´ee 4) from numpy.linalg import eig val p, vec p = eig(M1) print(’Valeurs propres de M1 : ’, val p) Produit : Valeurs propres de M1 : [ 0.16666667 1. 0.16666667 0.16666667 0.16666667] 5) def dansIntervalle(L,a,b): for x in L: if x<a or x>b: return False return True In[1] : print(’Valeurs propres toutes dans [0,1] ? ’, dansIntervalle(val p,0,1)) Out[1] : Valeurs propres toutes dans [0,1] ? True PC - Lyc´ ee Thiers TD 5 : Simulation num´ erique
© Copyright 2024 ExpyDoc