Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Actualités


Index du Forum » Actualités » Solveur équa diff en Python par Casio pour Graph Math+
Critor En ligne Administrateur Points: 2712 Défis: 18 Message

Solveur équa diff en Python par Casio pour Graph Math+

Posté le 23/12/2024 23:14

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 !


Téléchargement : Diff-Eq 1.0


Lephenixnoir En ligne Administrateur Points: 24689 Défis: 170 Message

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)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 521 Défis: 0 Message

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.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 83 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

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