Académique Documents
Professionnel Documents
Culture Documents
Préambule. Vous devez sauvegarder vos codes Python 3 dans un chier texte
d’extension .py créé, soit à partir de Spyder ; soit par un éditeur de texte (tel que Emacs) ;
soit encore vous choisissez de travailler avec l’IDE jupyter-lab (interface Firefox). Dans
tous les cas, véri ez bien que vous utilisez la version Anaconda de python installée sur le
serveur de la Faculté de Physique (VMware Horizon).
1
<latexit sha1_base64="7u5EQmMicloC+8DmJw8BgeX9zQM=">AAACKnicbZDNattAFIVHbtomTn/cdpnNbU3ApqrRGNuNFwGHbLoqDtSxwXLNaDyyB41+mBkVjNDzdNNXycaLBJNtHqQjxZS2yYWBj3Pu5c49XiK40o6ztSpP9p4+e75/UD188fLV69qbt5cqTiVlIxqLWE48opjgERtprgWbJJKR0BNs7AXnhT/+waTicfRNrxM2C8ky4j6nRBtpXjsj86wdfMQ5nAI0PuHm9yzIwfUloRnOs0bhNd/ntguB6XBswLZrgysWsVYGbPg6r9WdllMWPAS8gzra1XBe27iLmKYhizQVRKkpdhI9y4jUnAqWV91UsYTQgCzZ1GBEQqZmWXlqDsdGWYAfS/MiDaX690RGQqXWoWc6Q6JX6n+vEB/zpqn2T2YZj5JUs4jeL/JTATqGIjdYcMmoFmsDhEpu/gp0RUxM2qRbLUPoFIe2oQSMewb6/ZNur/8nhMt2C/da3YtOfeDs4thHR+gDaiCMPqMB+oKGaIQo+omu0DW6sX5ZG2tr3d63VqzdzDv0T1l3vwEC/qGh</latexit>
Dans cette expression, k et N sont des entiers, et pour des entiers, la factorielle k! =
1✕2✕3 … ✕k, y compris le cas particulier 0! = 1.
- Factorielle. Ecrivez une boucle itérative for .. pour calculer la factorielle d’un entier k ;
- Fonction. Insérez votre boucle itérative dans une fonction que l’on nommera fact_() et
qui acceptera un argument k ; cet argument prendra la valeur = 0 par défaut. La fonction
renverra le résultat sous forme d’un entier ;
- Importez la fonction factorial() du paquet math ;
- Comparez les résultats obtenus avec votre fonction fact_() à ceux rendus par
factorial() : est-il possible de poser l’identité stricte (au sens des prédicats v/f) entre les
résultats ? Essayez avec des valeurs de k allant jusqu’à 20 ou 30. Conclusion ?
- Construisez une suite numérique a comme celle qui apparait dans l’équation (1) en
xant N = 10. On voudra que type(a) soit list dans un premier temps ;
(3) a = numpy.array( fk )
et on remarquera que les équations (3) et (2) peuvent aisément se combiner pour n’en
faire qu’une seule.
En vous inspirant de cet exemple, obtenez une expression en Python qui vous permettra
d’obtenir la suite a de l’exercice 2 en une seule expression (une ligne de commande).
[Indice : pour un nombre i pair, i%2 = 0, sinon i%2 = 1 (qui est neutre pour la multiplication).]
Soit une suite numérique { ui }, i = 0, 1, ... n, dont les termes sont donnés par la relation de
récurrence
ui+1 = ln |ui + 1| .
- Déterminez à l'aide d'un script python si la suite de termes est sensible à la précision
du point de départ. [Note : elle sera sensible si l’erreur relative devient de forte amplitude].
Exemple : construisez la suite à partir de u0 = 2 > 0 jusqu'à n ≈ 50, puis reprenez en posant u = 2 x (1 +
0
Portez en graphique la suite numérique {ui } sous forme d’un nuage de points ;
- A l'aide d'une analyse aux différences nies, démontrez qu'elle est la raison de cette
(in)sensibilité à la valeur de départ.
- Montrez ensuite à l'aide d'un développement de Taylor à l'ordre 2 que le point ui = 0
est un attracteur pour le schéma proposé : il s’agit d’un point stable pour les itérations.
- Généralisez votre analyse au cas de la relation ui+1 = ln |ui + β| . Existe-il une plage
de valeurs de β pour laquelle le schéma itératif est stable ? instable ? Concluez.
fi