Flash back
Transcription
Flash back
Informatique pour tous Flashback FLASHBACK Objectif: réinvestir les connaissances acquises dans les T.P. précédents dans un projet adaptable en TIPE. Informatique pour tous Flashback ¤ Récupérer le fichier "experiment.csv" dans P:/Mes groupes/pcsi1/IPT/ et le copier dans son répertoire réseau personnel. C’est un fichier texte, obtenu à l'aide du tableau scientifique Regressi, qui contient (à partir de la troisième ligne) des chaînes de caractères correspondant aux valeurs numériques de deux variables (t et y) ; ¤ À l’aide d’un programme Python, lire le fichier pour afficher les deux premières lignes du fichier et en interpréter la signification ; ¤ Lire une ligne au-delà de la troisième pour comprendre comment sont séparées les chaînes dans le fichier ; Informatique pour tous Flashback ¤ A l'aide des données du fichier, tracer la courbe y = f(t) en utilisant le module matplotlib.pyplot ; ¤ Calculer ∫ t =30 t =0 y ( t ) dt ; ¤ Pour t > 40 s, la fonction y = f(t) est périodique. À l’aide de fonctions Python à écrire, calculer la valeur moyenne sur une période de y(t) puis de y2(t) ; ¤ Comparer y 2 et yMAX où yMAX est l’amplitude de y(t). 2 Informatique pour tous Flashback Informatique pour tous I-Méthode de Newton Représentations graphiques II-Plotons un peu III-Escargot IV-Bouquet final Informatique pour tous I-Méthode de Newton Représentations graphiques II-Plotons un peu III-Escargot from math import * def f(x) : return x**2 -2 def newton(f, x0, h, epsilon): N = 0 #compteur d'itérations u = x0 fder = (f(u+h) - f(u))/(h) v = u - f(u)/fder while abs(v-u) > epsilon and N < 50: fder = (f(u+h) - f(u))/(h) if fder == 0 : #evite une erreur au cas où return v else : u, v = v, v - f(v)/fder N = N + 1 #incrémente le compteur d'itérations return v # Entrées precision = 1/2**60 x0= 1+sqrt(2) ecart = 1/2**50 print(newton(f,1+sqrt(2),ecart,precision )) IV-Bouquet final Informatique pour tous I-Méthode de Newton Représentations graphiques II-Plotons un peu III-Escargot IV-Bouquet final import numpy as np import matplotlib.pyplot as pl pl.clf() pl.xlim(-4,4) pl.ylim(-3,3) def f(t,n) : return t**n #efface la fenêtre graphique #limite le domaine des x sur l'axe #limite le domaine des x sur l'axe x = np. linspace(-10, 10 ,150) couleurs = ('blue', 'red', 'green', 'magenta', 'yellow') legend=[] pas = 1 for i in range(1,4,pas) : ind_coul = i%len(couleurs) - 1 plot(x,[f(t,i) for t in x ], color=couleurs[ind_coul]) text =r"$x{^" + str(i)+"}$" legend.append(text) plot(1,1, 'ko') pl.text(1.2,1,'un point fixe') pl.grid() pl.axhline(color='black') pl.axvline(color='black') pl.title('courbes puissance') pl.legend([r"$x$", r"$x{^2}$", r"$x{^3}$"], loc='upper left') pl.show() Informatique pour tous I-Méthode de Newton Représentations graphiques II-Plotons un peu III-Escargot from math import * import numpy as np import matplotlib.pyplot as pl def f(t) : return (t+1)*(9-t)/4 def escargot(f, u0, n) : """ crée la liste des éléments de la suite un = f(un-1) f est la fonction étudiée u0 le terme initial de la suite n le nombre d'éléments calculés """ suite=[u0] for i in range(1,n): u = f(suite[i-1]) suite.append(u) return suite result = escargot(f,-0.5,20) # on appelle la fonction escargot IV-Bouquet final #on cherche la bonne échelle pour les abscisses borneinf = np.min(result) bornesup = np.max(result) delta =(bornesup-borneinf)/10 borneinf -= delta bornesup += delta pl.clf() #efface la fenêtre graphique pl.xlim(borneinf,bornesup) #limite le domaine des x sur l'axe # on trace la courbe de la fonction f x = np.linspace(borneinf,bornesup,100) y = [f(t) for t in x] pl.plot(x, y, color='red' ) # et la courbe g(x) = x pl.plot(x, x, color='green' ) # on place les éléments de la suite suitex = result suitey = [f(t) for t in suitex] pl.plot(suitex, suitey, 'bo' ) Informatique pour tous I-Méthode de Newton Représentations graphiques II-Plotons un peu # on trace les traits entre les éléments de la suite pl.plot([suitex[0],suitex[0]],[0,suitey[0]],color='blue') for i in range(1,len(suitex)): pl.plot([suitex[i],suitex[i]],[suitex[i],suitey[i]],color='bl ue') pl.plot([suitex[i-1],suitex[i]],[suitey[i-1],suitey[i1]],color='blue') # décoration pl.grid() pl.axhline(color='black') pl.axvline(color='black') pl.title(r"$f(x) = \frac{(x+1)\cdot(9-x)}{4}$") pl.plot(5.6,5.6,'ko') pl.text(4.9,4.5,"limite de la suite") pl.plot([5.6,5.6],[4.8,5.6],color='red') pl.show() III-Escargot IV-Bouquet final Informatique pour tous I-Méthode de Newton Représentations graphiques II-Plotons un peu from math import * import numpy as np import matplotlib.pyplot as pl def f(t) : return t**4 -2 def escargot(f, u0, n) : """ crée la liste des éléments de la suite un = f(un-1) f est la fonction étudiée u0 le terme initial de la suite n le nombre d'éléments calculés """ suite=[u0] for i in range(1,n): u = f(suite[i-1]) suite.append(u) return suite result = escargot(f,-8.41,20) III-Escargot IV-Bouquet final def newton(f, x0, h, epsilon): N=0 u = x0 suite=[u] fder = (f(u+h) - f(u))/(h) v = u - f(u)/fder while abs(v-u) > epsilon and N < 100: fder = (f(u+h) - f(u))/(h) if fder == 0 : return v else : u, v = v, v - f(v)/fder suite.append(u) N = N+1 return suite precision = 1/2**60 x0= -1 ecart = 1/2**50 result = newton(f,x0,ecart,precision ) # on appelle la fonction escargot Informatique pour tous I-Méthode de Newton Représentations graphiques II-Plotons un peu #on cherche la bonne échelle pour les abscisses borneinf = np.min(result) bornesup = np.max(result) delta =(bornesup-borneinf)/10 borneinf -= delta bornesup += delta pl.clf() #efface la fenêtre graphique pl.subplot(1,2,1) #premier dessin pl.xlim(-2, 2) pl.ylim(-2.5, 3) x = np.linspace(-5,5,100) y = [f(t) for t in x] pl.plot(x, y, color='red' ) pl.grid() pl.axhline(color='black') pl.axvline(color='black') pl.title(r"$f(x) = x^{4} - 2$") pl.subplot(1,2,2) III-Escargot IV-Bouquet final # on trace la courbe de la fonction f x = np.linspace(borneinf,bornesup,100) y = [f(t) for t in x] pl.plot(x, y, color='red' ) # on place les éléments de la suite suitex = result suitey = [f(t) for t in suitex] pl.plot(suitex, suitey, 'bo' ) # on trace les traits entre les éléments de la suite pl.plot([suitex[0],suitex[0]],[0,suitey[0]],color='blue') for i in range(1,len(suitex)): pl.plot([suitex[i],suitex[i]],[suitey[i-1],suitey[i]],color='blue') pl.plot([suitex[i-1],suitex[i]],[suitey[i-1],suitey[i-1]],color='blue') #deuxième dessin pl.xlim(borneinf,bornesup) #limite le domaine des x sur l'axe Informatique pour tous I-Méthode de Newton Représentations graphiques II-Plotons un peu III-Escargot # décoration pl.grid() pl.axhline(color='black') pl.axvline(color='black') pl.text(suitex[-1]+ delta, suitey[-1]+delta, "racine="+str(suitex[-1])) pl.text(suitex[0], -5*delta, r"$u_0="+str(suitex[0])+"$") pl.title("zoom autour d'une racine") pl.show() IV-Bouquet final