TP1 đ„ Calcul de racines
Une vidéo expliquant en détail le TP et fournissant quelques conseils est disponible en bas de page.
Un ordinateur, câest trĂšs rapide, mais pas trĂšs intelligent. On va en profiter pour lui faire calculer la racine carrĂ©e⊠de façon trĂšs bĂȘte.
Vous devez implĂ©menter deux mĂ©thodes de calcul « brutales » dâune racine carrĂ©e :
- une méthode par dichotomie (réduction d'un intervalle)
- une méthode chiffre par chiffre (par essais successifs)
Puis vous devrez :
- comparer ces méthodes à la fonction standard
math.sqrt()en termes de performance - étendre le calcul à une racine n-iÚme
Ă la fin de ce travail, vous serez capable de :
- Utiliser des variables, types de base, opérateurs et fonctions
- Utiliser des structures conditionnelles et expressions logiques
- Utiliser des structures répétitives
- Décomposer un algorithme en fonctions réutilisables
- Ăvaluer la performance dâun algorithme avec des mesures de temps
- Appliquer la logique pour résoudre un problÚme numérique complexe sans bibliothÚque
- Valider le fonctionnement de vos algorithmes Ă l'aide de jeux d'essais
Pour faire ce TP, vous devez créer un nouveau projet PyCharm et utiliser un répertoire GitHub dÚs le début.
- Si votre enseignant utilise GitHub Classroom, utilisez le répertoire créé par votre enseignant.
- Si votre enseignant n'utilise pas GitHub Classroom, créez votre propre répertoire et partagez-lui l'accÚs en lecture.
âđ€ đ đ«
Si votre travail est suspecté de plagiat (code copié d'un.e autre étudiant.e, code généré par IA, notions non abordées en classe, etc.), deux choses peuvent se produire :
- Le plagiat est prouvé par nos outils : note de 0, automatiquement.
- Le plagiat est plutÎt évident, mais une validation est requise : vous serez convoqué(e) au bureau de votre enseignant(e). Vous devrez répondre à certaines questions pour prouver que vous comprenez et maßtrisez le code qui a été utilisé. Si vous ne réussissez pas à répondre à certaines questions, vous aurez la note de 0 (si vous ne comprenez pas votre propre code, c'est que vous avez plagié, d'une maniÚre ou d'une autre).
- Au moins 5 commits de tailles comparables (il n'y a pas un commit avec tout dedans et les autres vides)
- Les commits décrivent l'avancement du projet dans un français sans faute (voir instructions)
- Chaque fonction doit ĂȘtre documentĂ©e Ă l'aide d'un docstring dans un français sans faute : description de la fonction, paramĂštres, valeur retournĂ©e, exceptions possibles, etc.
- Votre projet doit contenir exactement ces 3 scripts Python et rien d'autre (l'ordre des scripts n'a pas d'importance) :
tp1/
âââ racine.py # doit contenir vos 2 fonctions pour les 2 mĂ©thodes diffĂ©rentes du calcul de la racine carrĂ©e
âââ performance.py # doit contenir vos tests de performance des fonctions du module "racine.py"
âââ autocorrection.py # ce fichier vous est fourni et sert Ă l'autocorrection de votre travail
Téléchargez le fichier autocorrection.py et placez-le dans votre projet.
Dans le script racine.py, vous devez créer 2 fonctions, soit une pour chacune des 2 méthodes du calcul de la racine carrée d'un nombre.
On cherche la racine dans un intervalle qui se réduit de moitié à chaque étape.
On commence par déterminer l'intervalle initial :
Par la suite, on va réduire l'intervalle de moitié de la maniÚre suivante :
- On calcule le milieu :
- Puis :
On rĂ©pĂšte l'opĂ©ration de rĂ©duction de l'intervalle jusqu'Ă ce que le critĂšre dâarrĂȘt soit atteint (voir ci-dessous).
đ CritĂšre dâarrĂȘtâ
On arrĂȘte lorsque les deux bornes donnent le mĂȘme rĂ©sultat, une fois arrondi Ă la prĂ©cision demandĂ©e.
Par exemple, si on veut dĂ©cimales, on arrĂȘte lorsque :
et ce résultat arrondi est la racine approximée.
Exemple (racine de , avec dĂ©cimales)â
On poursuit les itérations jusqu'à ce que :
Supposons quâon obtienne :
bas = 2.8284225463867188haut= 2.82843017578125
Alors :
round(2.828422..., 5) = 2.82842round(2.828430..., 5) = 2.82843
â On continue.
Plus tard :
bas = 2.8284263610839844haut= 2.82843017578125
Alors :
round(2.8284263..., 5) = 2.82843round(2.8284301..., 5) = 2.82843
â On peut donc arrĂȘter.
Résultat retourné : .
On construit le résultat décimale par décimale, en partant de la gauche vers la droite.
Supposons que nous cherchons la racine carrée de .
đ Partie entiĂšreâ
On commence par déterminer la partie entiÚre (à gauche de la virgule) de la racine carrée.
On fait des essais successifs pour trouver le plus grand entier dont le carré est inférieur ou égal à :
Puisque , on retient .
đ Ă cette Ă©tape, on sait que la racine est dans lâintervalle :
Donc, la racine de ressemble Ă point quelque chose (ex : ).
đą DĂ©cimalesâ
On va maintenant ajouter les décimales une à la fois.
PremiĂšre dĂ©cimaleâ
On teste les valeurs possibles :
Puisque , on retient .
đ On a maintenant :
DeuxiĂšme dĂ©cimaleâ
MĂȘme principe :
Puisque , on retient .
đ On a maintenant :