π
<-
Chat plein-écran
[^]

importer module python (pour transformées de Laplace)

TI's micropython + modules

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

Unread postby parisse » 28 Sep 2020, 13:21

Adriweb wrote: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.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 10.6%
 
Posts: 2206
Joined: 13 Dec 2013, 16:35
Gender: Not specified

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

Unread postby parisse » 28 Sep 2020, 13:23

Hamza.S wrote: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.

C'est precisement ce que fait caseval du module cas du MicroPython de KhiCAS.
Je vais essayer de l'ameliorer (cf. post precedent).
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 10.6%
 
Posts: 2206
Joined: 13 Dec 2013, 16:35
Gender: Not specified

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

Unread postby Adriweb » 28 Sep 2020, 13:23

Laplace et Fourier sont effectivement deux exemples que j'entends souvent. Je ne sais pas trop pourquoi ils n'ajoutent pas de nouvelles builtins de temps en temps, c'est pourtant pas si compliqué.
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 55.9%
 
Posts: 13129
Images: 1087
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

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

Unread postby Adriweb » 28 Sep 2020, 13:25

parisse wrote:
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.

Oui c'est l'idée. Je posterai ici et sur le Google groups officiel.
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 55.9%
 
Posts: 13129
Images: 1087
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

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

Unread postby Hamza.S » 28 Sep 2020, 13:45

Adriweb wrote:Laplace et Fourier sont effectivement deux exemples que j'entends souvent. Je ne sais pas trop pourquoi ils n'ajoutent pas de nouvelles builtins de temps en temps, c'est pourtant pas si compliqué.

Oui mais TI ne prend en compte que les demandes des profs comme si c'était les profs qui passaient les examens en fin d'année scolaire. C'est triste.
Si on remonte un bug, ils prennent en compte le message si on demande un ajout qui pourrait aider dans le scolaire, ils font semblant de n'avoir pas lu le message.
Image
User avatar
Hamza.SAdmin
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 13.1%
 
Posts: 4044
Images: 18
Joined: 07 Nov 2014, 00:43
Gender: Male
Calculator(s):

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

Unread postby parisse » 28 Sep 2020, 15:23

Ce n'est quand meme pas completement trivial de fournir Fourier et Laplace en natif (surtout qu'il n'y a peut-etre plus personne qui maitrise reellement le code source du CAS chez TI...). Et apres il y a la question du support. Il y a plein de fonctions de Xcas qui ne sont pas non plus utilisables sur la HP Prime.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 10.6%
 
Posts: 2206
Joined: 13 Dec 2013, 16:35
Gender: Not specified

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

Unread postby Adriweb » 28 Sep 2020, 17:48

Bon, voici une v1 qui fait des choses intéressantes:

Image

Todo:

  • Gérer l'erreur que TI a mis en place dès qu'il y a le caractère "/" dans le résultat (🤨).
    Je vais faire un find+replace en amont en basic, et pareil de l'autre côté en python...
  • Résolution automatique des types pour le python, ca permettra une meilleure intégration (actuellement, c'est que des strings)

Le code actuel:

Code: Select all
from ti_system import readST, writeST

def evalExpr(expr):
  writeST("tmppy_",'string('+str(expr)+')')
  res = readST("tmppy_")
  return res[1:-1] # to remove the quotes
 
def evalFunc2(funcName, *args):
  arg=','.join(map(str, args))
  return evalExpr(funcName+'('+arg+')')
Attachments
evalExpr.tns
(1.35 KiB) Downloaded 8 times
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 55.9%
 
Posts: 13129
Images: 1087
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

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

Unread postby parisse » 28 Sep 2020, 18:26

Tant qu'a faire du code un peu portable ce serait sympa d'adopter le meme nom de module et de commande que moi, i.e. cas et caseval, vu que evalFunc2 fait la meme chose que caseval (d'ailleurs evalFunc2 c'est trompeur sur le nombre d'arguments).
Je viens en effet d'implementer caseval avec nombre variables d'arguments.
On peut donc ecrire
Code: Select all
caseval("sin(0)")
caseval("sin",0)
caseval("integrate","1/x","x",1,2)

Le resultat est sous forme de chaine, et ca restera comme ca dans KhiCAS. En effet je pense qu'il vaut mieux avoir un type de retour deterministe, rien n'empeche le programme appelant de la fonction caseval de faire eval sur la chaine renvoyee (et eventuellement de gerer des exceptions).
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 10.6%
 
Posts: 2206
Joined: 13 Dec 2013, 16:35
Gender: Not specified

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

Unread postby Adriweb » 28 Sep 2020, 18:34

Alors moi je veux bien (juste faire un alias, d'ailleurs), mais mon machin n'a rien a voir avec du "CAS", ca marchera avec la math engine que la calculatrice aura, et ce n'est pas forcément une machine CAS ^^
D'ailleurs, dans ma version en cours, j'ai renommé en evalExpr et callFunc respectivement.
Un alias (qui n'aura pas un nom tres correct sur une machine non-CAS) nommé "caseval" pourrait etre rajouté, mais du coup sur quelle fonction ? Ou alors je recrée un evalExpr qui agit differement en fonction du nombre d'argument pour faire comme le "caseval" du code de khicas mentionné ici.
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 55.9%
 
Posts: 13129
Images: 1087
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

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

Unread postby parisse » 28 Sep 2020, 18:35

P.S.: au passage, on peut ecrire
Code: Select all
caseval("a:=",a)
eval(caseval("a"))

pour stocker la valeur d'une variable Python dans le CAS et la rappeler, il me semble que ca permet d'eviter les 4 commandes de ti_system: recall_value/store_value/recall_list/store_list.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 10.6%
 
Posts: 2206
Joined: 13 Dec 2013, 16:35
Gender: Not specified

PreviousNext

Return to Python

Who is online

Users browsing this forum: No registered users and 1 guest

-
Search
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.2 pour les Nspire CX II
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
548 utilisateurs:
>528 invités
>14 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)

-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)