Surprise, dans la lancée de la sortie de sa
mise à jour 2.00 majeure pour
Graph Math+,
Casio nous publie aujourd'hui un script
Python pour
Graph Math+.
Il s'agit d'un
solveur graphique d'équations différentielles, également compatible avec les
fx-CG100 et
fx-1AU Graph, modèles équivalents hors de France.
Le manuel l'appelle
Diff-Eq 1.0, mais le code
Python inclut un nom plus complet :
Slope Field Graph 1.0.
L'application en question se compose de 3 scripts
Python que tu dois copier dans un même dossier au choix de ta calculatrice, et c'est ensuite le script
DEQexe.py que tu dois lancer.
Il te demande alors de saisir ton équation différentielle ainsi que les bornes de la fenêtre, et t'affiche alors le champ de vecteurs des solutions :
Comme clairement indiqué à l'écran, tu es ensuite invité à taper [OK] pour saisir des conditions initiales et visualiser simultanément jusqu'à 3 solutions particulières :
C'est donc la toute première fois que
Casio nous sort un élément additionnel codé en
Python.
Avec la suppression du support des applications additionnelles en langage machine sur
Graph Math+, nous nous demandions bien comment
Casio allait faire pour continuer à proposer des fonctionnalités additionnelles.
Apparemment jusqu'ici il y a donc 2 approches :
- pour les fonctionnalités nécessitant du code en langage machine et donc sensibles, comme nous avons vu avec la mise à jour 2.00 une intégration a priori en dur dans le système d'exploitation
- et pour les autres, un codage en Python
Attention, le code
Python de
Diff-Eq 1.0 utilise la fonction de test de touche
getkey(), et n'est donc malheureusement pas compatible avec les anciens modèles programmables en
Python.
Et bien bonne nouvelle, nous avons le plaisir de t'offrir une version modifiée,
Diff-Eq 1.0 "compatible edition" ciblant les anciennes
Casio Graph programmables en
Python.
La fonction
getkey() ne servait ici qu'à détecter la pression de la seule touche [OK].
Nous contournons l'absence de cette fonction en interceptant l'exception
KeyboardInterrupt déclenchée lorsque tu tapes la touche [AC].
Sur
Graph 90+E et
fx-CG50, il te suffit donc, comme nous l'indiquons, de taper [AC] au lieu de [OK].
Nous en profitons pour rajouter également la compatibilité avec l'écran monochrome des
Graph 35+E II et
fx-9750/9860GIII.
Outre l'absence de couleur cela implique également une réduction de la définition de l'écran, on passe de
384×192 pixels à
128×64 pixels. L'idée est donc de diviser à peu près toutes les coordonnées d'affichage en pixels par 3, puis d'effectuer quelques ajustements ou allègements pour la lisibilité puisque nous n'avons plus que 2 couleurs pour afficher : noir et blanc.
En prime pas besoin de t'embêter à choisir entre différents fichiers, notre version détecte automatiquement la présence ou absence de la fonction
getkey() ainsi que le caractère couleur ou monochrome de l'écran, et s'adapte automatiquement !
Citer : Posté le 23/12/2024 23:20 | #
Eh beh, c'est étonnamment élaboré !
J'ai pas tout lu encore mais vu le code de Line() c'est clair qu'ils ont pas vu ton super exposé sur comment faire ça efficacement.
Je me demandais comment ils faisaient pour parser les expressions en entrée, mais évidemment ils le font pas, ils utilisent juste eval(). x)
Citer : Posté le 24/12/2024 12:40 | #
C'est pas mal du tout en fait. Un truc déstabilisant c'est d'écrire Y'= avec un Y majuscule alors qu'ensuite c'est un y minuscule qui est attendu. Sinon, l'affichage est bon avec 16*8=128 petites tangentes, le calcul est une version plus évoluée que Runge-Kutta 4, il utilise des tableaux de Butcher avec un test de tolérance sur le pas, mais pas le même que KhICAS. Je n'ai rien vu dans l'UI qui permette de récupérer la valeur finale de la solution approchée (comme odesolve dans KhiCAS).
Niveau efficacité, j'ai regardé rapidement avec y'=sin(t*y) (Y'=sin(x*y) sur la Casio). Il faut environ 10 secondes pour tracer le champ des tangentes et 2 solutions, environ 2 fois plus qu'avec KhiCAS. Mais KhiCAS trace environ 2 fois plus de petites tangentes, je pense qu'avec une résolution identique, on doit pouvoir faire 4 fois plus rapide que ce programme (et accessoirement on devrait pouvoir choisir la condiition initiale sur le graphe donnant le champ des tangentes, c'est possible dans Xcas, il faudrait faire une UI dédiée sur la Casio dans les apps de KhiCAS). Donc ça reste suffisamment efficace, ce qui n'est pas si étonnant que ça vu que le cout du calcul est principalement porté par le temps pour calculer f(t,y).
Quel est le public cible? Surement pas le lycée en France où la notion de champ des tangentes est absent (sauf erreur de ma part), et dans le supérieur les calculatrices sont presque partout interdites. Je pense que c'est plutot pour la fxcg100. La mauvaise nouvelle, c'est que ça confirme s'il en était besoin que Casio va défendre l'idée que les programmes tiers c'est du Python maintenant.