03 · Rationnels : produits croisés et réduction
Rationnels : produits croisés et réduction¶
Traitez une fraction comme une paire d’entiers dont la valeur ne dépend pas du représentant choisi.
Vous distinguez représentant, classe d’équivalence et forme normale.
- expliquer avec vos mots la définition mathématique de « Rationnels : produits croisés et réduction »
- indiquer comment elle est représentée dans les données Python
- prédire une petite exécution à partir du code réel
Pour des dénominateurs non nuls, `p/q = r/s` exactement quand `p*s=q*r` ; `1/2` et `2/4` ont donc la même valeur.
`Rational` conserve numérateur et dénominateur entiers, refuse zéro et choisit une forme lisible avec `reduction()`.
`p/q ~ r/s` → `p * s == q * r` → `Rational.__eq__`
Définition mathématique
Définition mathématique¶
Pour des dénominateurs non nuls, p/q = r/s exactement quand p*s=q*r ; 1/2 et 2/4 ont donc la même valeur.
Représentation des données
Représentation des données¶
Rational conserve numérateur et dénominateur entiers, refuse zéro et choisit une forme lisible avec reduction().
Implémentation Python
Implémentation Python¶
__eq__ effectue les produits croisés, __add__ construit un dénominateur commun et la réduction normalise signe et PGCD.
La correspondance exacte utilisée dans ce cours:
Trace d’exécution
Trace d’exécution¶
La comparaison descend vers multiplication et égalité entières, montrant la réutilisation de la tour numérique.
Prévoyez le booléen d’égalité et la forme réduite de `2/4`.
Écrivez d’abord votre prédiction, puis exécutez.
Vérification par les tests
Vérification par les tests¶
Les tests comparent fractions équivalentes, hachages et rejet du dénominateur nul.
Portée et limites
Portée et limites¶
De grands composants amplifient le coût des naturels unaires sous-jacents.