Ce cours n'a pas été mis à jour depuis 3 années. Considérez donc son contenu avec précaution car certaines parties peuvent être obsolètes.Description :
Programme en Python permettant de résoudre des équations diophantiennes
Une équation diophantienne est une équation du type Ax+By=C, (A,B,C des entiers relatifs, x et y nos inconnues)
Les avantages de ce programme Python alors que j'ai déjà fait un programme en Basic qui résout ce type d'équation ?
Un vrai affichage "dynamique". Par affichage dynamique j'entends que le texte, nombre autour etc. s'affichent correctement quelles que soient les valeurs des variables (en particulier les grandes valeurs, ou négatives)
Affichage instantané de toutes les étapes, chose qui n'était pas possible en Basic
Python qui rentre dans le programme de cours contrairement au Basic Et Python n'est pas assez utilisé, donc c'est ma petite contribution
Merci à Dark Storm et KikooDX pour leur explications quand je voulais optimiser le programme x)
Utilisation :
Le programme vous demandera 2 choses à 2 moments, le reste se fera tout seul :
Entrer A, B et C tout au début du programme
Entrer ou non des solutions particulières
Si vous voulez juste les solutions pour vérifier votre exercice, entrez les valeurs de A,B,C (éventuellement votre solution particulière), et vous n'aurez qu'à prendre les 2 dernières lignes qui seront les solutions.
Si vous voulez toute la résolution, entrez vos A,B,C (éventuellement votre solution particulière), et à la fin, remontez tout jusqu'à vos valeurs de A, B, et C, pour pouvoir lire toutes les étapes correctement.
Ci-dessous ce que le programme fait : (en vert les moments où vous devez entrer une valeur)
Donnez vos A, B, C tels que Ax+By=C
A = 2
B = 3
C = 4
On cherche (x,y) tel que 2x+3y=4
Soit D = PGCD(2,3) = 1
2x+3y=4 est equivalent a :
2x+3y=4 (on divise par D)
Entrer une solution particuliere ?
[1]Oui / [2]Non : 2
La solution particuliere est :
X_0 = 8
Y_0 = -4
2x+3y = 4 est equivalent a
2x+3y = 2*8 + 3*-4
<=> 2(8-x) = 3(4+y)
Donc 2|3(4+y)
Or PGCD(2,3)=1
D'ou 2 divise 4+y, d'apres le Theoreme de GAUSS.
Autrement dit : 4+y=2k
2(8-x) = 3(4+y)
(4+y) = 2k
2(8-x) = 3*2k
y = 2*k - 4
8-x = 3*k
y = 2*k - 4
Les solutions sont donc :
x = 8 - 3*k
y = 2*k - 4
/!\ A noter que la solution proposée par le programme n'est pas unique, tout comme la solution particulière.
Si vous avez trouvé une autre solution, commencez par l'injecter dans votre équation pour voir si l'égalité est bien existante.
Si votre exercice vous propose un couple (x₀,y₀) comme solution particulière, prenez la dans le programme en entrant 1 dans la 2e étape en vert (ci dessus).
Je précise à toute fin utile que le programme n'est pas commenté, pas aéré, pour gagner de la mémoire.
Vous avez dans le premier commentaire un fichier .py qui fait la même chose mais sur ordinateur : celui-ci est commenté, aéré, et respecte la PEP8
Pour transférer le fichier diophant.py dans votre calculatrice Graph 35+E II ou Graph 90+E, je vous conseille de lire ce tutoriel, et la partie 4 plus spécifiquement :
Brancher votre calculatrice à l'ordi et appuyer sur [F1] sur la calculatrice
Transférer diophant.py dans la calculatrice, pas dans un sous-dossier, directement dans la mémoire principale
Si il y a un problème quelconque, n'hésitez pas à me contacter pour que je le règle (sinon vous pouvez le régler vous, sans aucun problème ! ), ou à commenter le programme, pour une question/proposition d'amélioration/avis...
Et ce premier commentaire pour poster le programme commenté.
(je n'ai pas voulu le mettre dans la page du programme pour que les gens ne confondent pas)
Deux problèmes sur ce programme :
- Lorsque l'on rentre une équation qui n'a pas de solution, fais plutôt ceci: importe la bibliothèque sys et utilise la fonction sys.exit() qui stoppera proprement le programme sans faire redémarrer le noyau
-Lorsque l'on rentre une équation simplifiable le résultat retourné est faux ! Par exemple, pour l'équation 72x+93y=-36 (chaque membre divisible par 3) le résultat affiché est x=-264-3k et y=24*k+204 ce qui est faux car par exemple (k=1): 72(-267)+93(228)=1980
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd