Page 3 sur 7

Re: importer module python (pour transformées de Laplace)

Message non luPosté: 27 Sep 2020, 21:02
de parisse
Adriweb a écrit:Rajouter un api python(...) a l'interieur de la version nspire-lua de khicas permetrait de palier quelque peu a ce manque.

Si quelqu'un veut se lancer la-dedans, je suivrai bien sur le projet avec bienveillance. Mais il me semble que c'est beaucoup de travail, dupliquant en grande partie ce que j'ai fait avec le shell de KhiCAS, et ce serait inutilisable sur d'autres calculatrices, contrairement a mon interface.
Il y a plein d'autres choses qui me semblent plus interessantes, par exemple rajouter le support des images dans le module graphic de KhiCAS (meme si on ne pourra pas s'en servir sur une Numworks, pour le moment en tout cas).

Re: importer module python (pour transformées de Laplace)

Message non luPosté: 27 Sep 2020, 21:15
de parisse
Adriweb a écrit:Travailler sur le logiciel ordi avec les fichiers tns qu'on a pu commencer sur ordi/calculatrice, puis qu'on a continuer d'utilisé sur ordi/calculatrice, est bien pratique, je sais que je faisais pas mal ca quand j'étais étudiant.

Mais on peut le faire avec KhiCAS. Il suffit d'utiliser Xcas sur son ordinateur ou Xcas pour Firefox sur son navigateur et d'exporter sa session pour TI Nspire, puis on la transfere sur la TI. L'interet de choisir KhiCAS c'est qu'on peut *aussi* exporter vers Numworks. Des eleves ayant certains des Numworks, d'autres des Nspire peuvent donc echanger des sessions entre eux (pas juste des scripts Python, qui en plus ne sont pas forcement compatibles).

C'est pour ca que je proposais d'ajouter python() a la version Lua (mais j'ai pas vérifié, est-ce que c'est deja censé marcher ?)

Pouvoir faire python(string,python) dans l'interface lua existante c'est trivial. Ce qui necessite du travail, c'est d'avoir l'ensemble des modules utiles pour l'enseignement dont 3 modules graphiques (pixel, repere, tortue) et d'avoir un UI pour l'edition de programmes + un shell. C'est precisement parce que faire ca en lua me paraissait tres complique et inutilisable ailleurs que je suis parti de l'interface pour les Casio et Numworks pour refaire l'UI de KhiCAS pour les nspire cx.

Re: transformées de Laplace

Message non luPosté: 28 Sep 2020, 01:32
de Adriweb
Hamza.S a écrit:Ce que tu souhaites faire n'est pas encore possible en python, Laplace retourne des expressions et non des nombres.


Bon en fait en explorant le python nspire, j'ai trouvé un moyen un peu contourné de faire ce que l'on voulait :D



Code: Tout sélectionner
from ti_system import *
writeST("tmppy_","myBasicFunction(1,2,3)")
readST("tmppy_")


Y'a plus qu'a se faire un wrapper pythonesque et ca sera bon B-)

Re: importer module python (pour transformées de Laplace)

Message non luPosté: 28 Sep 2020, 06:52
de parisse
Mouais, c'est complique et probablement tres inefficace (c'est quoi writeST et readST? Des fonctions de lecture/ecriture sur le systeme de fichiers?).
Python n'est pas concu pour faire du calcul avec des expressions. Si on veut en faire quand meme, il faut soit travailler avec des chaines pour communiquer avec le CAS (avec tous les inconvenients que ca pose), soit creer soi-meme son type et redefinir les operations arithmetiques de base dessus puis faire son propre noyau (mais je ne suis pas sur que la version de MicroPython de TI soit assez recente pour le faire, de memoire il faut la 1.12 au moins).
C'est quand meme beaucoup plus simple de travailler soit en TI-Basic soit avec KhiCAS en restant avec l'interpreteur de Xcas.

Re: importer module python (pour transformées de Laplace)

Message non luPosté: 28 Sep 2020, 08:57
de franky62217
je viens d'écrire à ti-cares français

Re: importer module python (pour transformées de Laplace)

Message non luPosté: 28 Sep 2020, 09:13
de Hamza.S
L'essentiel c'est que ça fonctionne. On a un moyen d'appeler une fonction Basic qui retourne des expressions depuis python.

Après par quelle magie il a trouvé ça ? On ne sait pas encore.

Re: importer module python (pour transformées de Laplace)

Message non luPosté: 28 Sep 2020, 10:00
de parisse
Hamza.S a écrit:L'essentiel c'est que ça fonctionne. On a un moyen d'appeler une fonction Basic qui retourne des expressions depuis python.

Ca ne retourne surement pas une expression dans MicroPython. Plutot une chaine de caracteres, non? Du coup quel avantage a utiliser ca plutot que caseval du module cas de KhiCAS qui est autrement plus simple?
Sauf bien sur si vous voulez utiliser une fonction ti-basic qui n'a pas d'equivalent dans le CAS de KhiCAS, mais s'il s'agit de programmer pour faire des maths, c'est plutot Xcas qui est plus complet que le CAS de la Nspire!

Re: importer module python (pour transformées de Laplace)

Message non luPosté: 28 Sep 2020, 12:56
de Adriweb
Ce topic n'a a la base pas de lien avec KhiCas vu que la question était de faire ça avec les moyens du bord proposés par TI, donc je réponds à la question sans Khicas :p Je ne doute pas qu'on puisse faire librement davantage de choses si on se cantonne à l'environnement khicas vu qu'on a un MicroPython plus recent, mais perso si j'ai des maths à faire, je lance Wolfram Alpha/Mathematica Online/le logiciel Nspire (et je dois être un cas particulier; la plupart des gens n'utilisent sûrement qu'un seul truc, donc la portabilité de leur création n'intéresse probablement pas grand monde, sauf les enseignants peut être, dont il faut bien que leur fichiers puissent être ouvert sur un maximum de plateforme)

Dans readST/writeST, ST signifie Symbol Table (la couche appelée ainsi par TI pour gérer les variables dans le classeur). Ce sont juste des alias de read_value et store_value il me semble (mais plus bas niveau, sams les checks de type python en entrée...?), tout comme eval_function est en fait un alias de evalFunc. J'ai trouvé ça juste avec un dir() après import :p

En tout cas cela veut aussi dire que si les syscalls correspondant à ces 3 fonctions sont trouvés, khicas peut simplement aller lire/écrire des variables basic, et évaluer des fonctions basic. Ce qui serait pas mal pour une intégration avec l'os. Un appel direct depuis le micropython intégré devrait même convenir si l'abi est suffisamment stable (ça j'en sais rien, faut tester)

Comme autre fonctions intéressantes potentiellement (je crois que ça ajuste les types correctement), y'a celles avec les listes (et matrices? Je sais plus). Bref du coup on a au moins number/list/string d'interoperables. Mais je confirme que le evalFunc force en numérique par contre, même sur CAS (mais c'est pas bien grave si de l'autre côté, la fonction basic retourne un string d'une valeur exacte/symbolique :p)

En tout cas, je vais faire un wrapper qui prend des arguments variadiques etc ça devrait être pas si mal.

Re: importer module python (pour transformées de Laplace)

Message non luPosté: 28 Sep 2020, 13:20
de Hamza.S
Je parlais pour la fonction écrit en Basic qui retourne une expression.
Le Python ne retourne pas si facilement des expressions mais si on peut récupérer l'expression sous forme de chaîne de caractères c'est déjà très intéressant.
Oui Xcas est plus complet que le Nspire CAS.
Ça fait 5 ans que je me plains chez eux pour qu'ils rajoutent Laplace et Fourrier car les élèves et étudiants en électrotechnique utilisent ces fonctions.

Re: importer module python (pour transformées de Laplace)

Message non luPosté: 28 Sep 2020, 13:21
de parisse
Adriweb a écrit:Ce topic n'a a la base pas de lien avec KhiCas vu que la question était de faire ça avec les moyens du bord proposés par TI, donc je réponds à la question sans Khicas :p

A la base, c'etait une question sur la possibilite d'utiliser la transformee de Laplace depuis Python.
C'est pour cela que je suis revenu (avec insistance) montrer que c'est tres simple avec KhiCAS.

Dans readST/writeST, ST signifie Symbol Table (la couche appelée ainsi par TI pour gérer les variables dans le classeur). Ce sont juste des alias de read_value et store_value il me semble, tout comme eval_function est en fait un alias de evalFunc. J'ai trouvé ça juste avec un dir() après import :p

dans ce cas ca ne doit pas etre trop inefficace.

En tout cas cela veut aussi dire que si les syscalls correspondant à ces 3 fonctions sont trouvés, khicas peut simplement aller lire/écrire des variables basic, et évaluer des fonctions basic. Ce qui serait pas mal pour une intégration avec l'os. Un appel direct depuis le micropython intégré devrait même convenir si l'abi est suffisamment stable (ça j'en sais rien, faut tester)

On peut sans doute le faire si on sait comment appeler l'OS de la Nspire, mais ca restera specifique a la TI. Et comme je l'ai deja dit, les possibilites mathematiques de KhiCAS surpassent celles de la Nspire, alors je ne vois pas l'interet de passer du temps la-dessus pour in fine favoriser l'ecriture de programmes Python non portables. Maintenant si quelqu'un a envie de le faire, je ne vois aucun inconvenient a ajouter le source correspondant dans KhiCAS.

En tout cas, je vais faire un wrapper qui prend des arguments variadiques etc ça devrait être pas si mal.

Ca pourrait effectivement etre interessant de ne pas avoir a tout convertir de et vers chaine comme dans caseval. On pourrait imaginer que caseval("string",arg1,..) parse la string puis appelle la fonction de nom string avec comme arguments arg1, ... et renvoie soit une chaine soit un objet supporte par MicroPython quand c'est possible.