Page 4 sur 7

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

Message non luPosté: 28 Sep 2020, 13:23
de parisse
Hamza.S a écrit: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).

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

Message non luPosté: 28 Sep 2020, 13:23
de Adriweb
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é.

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

Message non luPosté: 28 Sep 2020, 13:25
de Adriweb
parisse a écrit:
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.

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

Message non luPosté: 28 Sep 2020, 13:45
de Hamza.S
Adriweb a écrit: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.

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

Message non luPosté: 28 Sep 2020, 15:23
de parisse
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.

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

Message non luPosté: 28 Sep 2020, 17:48
de Adriweb
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: Tout sélectionner
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+')')

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

Message non luPosté: 28 Sep 2020, 18:26
de parisse
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: Tout sélectionner
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).

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

Message non luPosté: 28 Sep 2020, 18:34
de Adriweb
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.

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

Message non luPosté: 28 Sep 2020, 18:35
de parisse
P.S.: au passage, on peut ecrire
Code: Tout sélectionner
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.

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

Message non luPosté: 28 Sep 2020, 18:41
de parisse
Adriweb a écrit: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

Certes, un alias parait une bonne idee. Il me semble qu'en Python on utilise des noms de commande en minuscules, pas avec de la casse mixte a la TI, par exemple evalnative?