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

Documents pareils