TD d’informatique n°3 R. DUPERRAY Lycée F. BUISSON PTSI
LES FONCTIONS
Note: Les questions des exercices ne constituent que la trame principale de ce que vous devez faire pour vous guider, rien n’interdit bien sûr que vous alliez plus loin, que vous testiez d’autres choses, bref que vous expérimentiez…
EXERCICE 1 : APPROXIMATION D’UNE FONTION PAR UNE SOMME DE SINUS
On considère la fonction constante par morceau suivante : f t
( )
= 1 pour 0< t < T 2 0 pour t = T 2 −1 pour T 2 < t < T ⎧ ⎨ ⎪ ⎩ ⎪a) Tracer cette fonction sur un papier.
Il est possible d’approximer f t
( )
par la somme suivante : S t;n( )
= 4 π 1 2i−1(
)
sin 2 2(
iT−1)
πt ⎛ ⎝ ⎜ ⎜ ⎞ ⎠ ⎟ ⎟ i=1 n∑
On peut montrer que S t
( )
;n →f t( )
quand n→ ∞ .b
) Ecrire sous Python une fonction S
(
t,n,T)
qui retourne la valeur de
S t( )
;n.
c) Ecrire sous Python une fonction
f t,T( )
qui retourne la valeur de
f t( )
.
d) Faire afficher des listes qui montrent comment l’erreur
f t( )
−S t( )
;névolue avec
net
tpour les cas
n = 1;3;5;10;30;100et
t =αTavec
T = 2πet
α = 0,01; 0,25; 0,49.
e) Commenter comment la qualité de l’approximation dépends de
αet
n.
EXERCICE 2 : CALCULER LA VITESSE ET L’ACCELERATION A PARTIR DE LA POSITION POUR
UNE TRAJECTOIRE EN 2D
On considère un objet qui se déplace dans le plan xy tel que à l’instant t l’objet se trouve au point
x t
( )
,y t( )
(
)
. Le vecteur vitesse à l’instant t peut être approximé par : v t( )
≈ x t(
+ Δt)
− x t − Δt(
)
2Δt , y t(
+ Δt)
− y t − Δt(
)
2Δt ⎛ ⎝ ⎜ ⎜ ⎞ ⎠ ⎟ ⎟. Le vecteur accélération dans le plan à l’instant t peut être approximé par :a t
( )
≈ x t(
+ Δt)
− 2x t( )
+ x t − Δt(
)
Δt2 , y t(
+ Δt)
− 2y t( )
+ y t − Δt(
)
Δt2 ⎛ ⎝ ⎜ ⎜ ⎞ ⎠ ⎟ ⎟. Ici, Δt est un petit intervalle de temps.b) Ecrire une fonction Cinematique
(
x , y ,t,dt)
(ici dt correspond à Δt)
pour calculer la vitesse et l’accélération d’un objet à partir des relations précédentes. La fonction doit retourner des listes contenant la position, la vitesse et l’accélération pour chaque instant t .c) De nombreuses courbes fascinantes sont générées par un point sur une roue en mouvement. Le
mouvement de la valve d’une roue de vélo est nommé une cycloïde et est décrit par la courbe paramétrée suivante : x t
( )
=c ×(
t −sin t( )
)
y t( )
=c × 1 − cos(
( )
t)
⎫ ⎬ ⎪ ⎭⎪ pour t ≥ 0 et c =csteLa figure 12.11 représente le graphe d’une cycloïde pour c = 1 et 0≤t ≤ 3π. Lorsque la roue fait une révolution dans l’intervalle 0≤t ≤ 2π, on obtient une arche de la cycloïde.
d) Utiliser votre fonction Cinematique dans un programme avec la courbe paramétrique de la cycloïde
pour c = 1. Tester le programme en calculant, pour t = 1 par exemple, la vitesse et l’accélération avec
Δt = 10−5. Vérifier et comparer vos résultats avec un calcul à la main.
e) Vérifier que pour t = 2πn avec n = 0;1; 2 ...la vitesse du point s’annule. Que vaut son accélération ?
EXERCICE 3 : DETERMINATION NUMERIQUE DU ZERO D’UNE FONCTION REELLE
Il est très rare de pouvoir déterminer le zéro d’une fonction réelle (d’une variable réelle) d’une façon analytique (ou du moins de façon relativement simple). Il est donc nécessaire d’opter pour une résolution numérique. Une procédure simple et très utilisée est la méthode de Newton-Raphson qui est illustrée sur la figure ci-dessous qui montre le graphe d’une fonction f x
( )
.La solution de l’équation f x
( )
= 0 est notée x∗. L’idée derrière la méthode de Newton-Raphson estde « deviner » une valeur initiale de x notée x0 « suffisamment proche » de x∗ et de dessiner la tangente à la courbe f x
( )
en x0, comme illustré sur la figure. Très souvent, le prolongement de la tangente coupe l’axe horizontal en une valeur plus proche de x∗ que de x0. On note x1 cette valeur de x et on répète la procédure en utilisant x1 pour produire une nouvelle valeur x2 qui sera encore plus proche de x∗. En répétant cette procédure, on fait ce que l’on appelle une itération, on peutapprocher, avec le degré de précision souhaité, la valeur de x∗.
En utilisant la figure, on peut obtenir une relation commode pour les itérations de x. La pente de
f x
( )
en xn, f' xn
( )
, est donnée par :f' x n
( )
=f x( )
n − 0xn − xn+1 ce qui donne en résolvant pour xn+1 :
xn+1 =xn − f x
( )
nf' x n
( )
qui est la relation d’itération pour la méthode de Newton-Raphson.
Comme application, nous pouvons considérer l’équation de réaction suivante : 2NOCl( ) ! 2NOg ( ) + Clg 2( ) g
dont la constante d’équilibre à une température donnée vaut 2,18. Si l’on introduit 1 bar de NOCl( ) g dans une enceinte, on obtient à l’équilibre, PNOCl = 1,00 − 2x , PNOl = 2x et PCl =x. Ces pressions doivent satisfaire l’expression de la constante d’équilibre :
PNO2P Cl2 PNOCl2 = 2x
( )
2 x (1,00− 2x(
)
2 = 2,18qui peut s’écrire (vérifiez le) : f x
( )
= 4x3− 8,72x2+ 8,72x− 2,18 = 0.A cause de la stoechiométrie de l’équation de réaction, la valeur de x recherchée doit se trouver entre 0 et 0,5. Ainsi on peut choisir 0,250 comme notre valeur « devinée » initiale x0.
Ecrire une fonction Newton-Raphson
(
x0,n)
qui aura pour paramètre d’entrée la valeur « devinée » initiale x0 et le nombre d’itérations de la procédure n. Cette fonction devra vous retourner la valeur des différents xn.La fonction Newton-Raphson devra elle-même faire appel à deux fonctions : f-x
( )
xn retournant la valeur de f x( )
n et f-derive-x( )
xn retournant la valeur de f'( )
x .RAPPELS SUR LES FONCTIONS SOUS PYTHON
Un fonction est une « boite noire » qui nécessite des paramètres (ou arguments) d’entrée de type quelconque (string, list, float, integer etc….) et qui vous retourne en sortie une ou plusieurs valeurs de type quelconque, ci-dessous l’exemple de la fonction arrondie (round) à deux chiffres après la virgule.