π
<-
Chat plein-écran
[^]

KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

:32tins: :32tinsktpb: :32tinsktpn: :32tinscas: :32tinstpkc: :32tinstpktpb: :32tinstp: :32tinscastp: :32tinscmc: :32tinscx: :32tinscxcas:

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude Adriweb » 22 Juin 2020, 15:47

Ti64CLi++ a écrit:What parisse meant was that CASEVAL does exist in (Micro-)Python. That's why modifying the way it is used can't be done easily (or at all).

It exists as part of the custom module, not initially.
And anyway this isn't the issue, you "can't" just change the lexer just for that ^^
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude Ti64CLi++ » 22 Juin 2020, 15:49

Adriweb a écrit:It exists as part of the custom module, not initially.
And anyway this isn't the issue, you "can't" just change the lexer just for that ^^

Sorry my bad. But compsystems understood it anyway, so I can even delete my post if it is wrong ;)
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude parisse » 22 Juin 2020, 17:53

Anyway, if you want to program CAS algorithms, it's way easier to do it inside the Xcas interpreter. The caseval command is here for people who want to write a mostly non symbolic Python program but need a symbolic command from time to time.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude parisse » 23 Juin 2020, 20:26

Je viens de finir un premier jet de version native de matplotl avec des versions basiques de bar, scatter, plot, arrow, text, axis. Par rapport a l'implementation casio, j'ai aussi mis hist et une commande venant de Xcas linear_regression_plot, qui me semble utile. La plupart de ces commandes sont facilement accesibles par le menu rapide shift 7.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude parisse » 28 Juin 2020, 08:27

Nouveau module disponible: linalg, dont voici la liste actuelle de commandes
    array
    matrix
    arange
    linspace
    dot
    solve
    peval
    horner
    mult
    transpose
    rref
    egv
    eig
    det
    zeros
    ones
    eye
    rand
    shape
    size
    inv
    re
    proot
    pcoeff
    fft
    ifft
    apply
    add
    sub
    re
    real
    im
    imag
    conj
    abs
Les matrices sont representees comme des listes de listes (ou des tuples de tuples), ce qui presente un inconvenient par rapport a Xcas, on ne peut pas ecrire + ou - ou * pour faire des operations sur les matrices. Il faudrait pouvoir mettre ca dans une classe et redefinir les operateurs +, - et * dessus, mais je ne sais pas comment faire ca.
J'ai un peu modifie la machine virtuelle MicroPython pour accepter des indices tuples, m[0,0] par exemple, comme ca provoque une erreur en Python je me suis dit que ce n'etait pas genant.
S'il y a des utilisateurs de numpy et/ou des connaisseurs de MicroPython qui ont des suggestions, je suis preneur!
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude Bisam » 28 Juin 2020, 09:09

Pour surcharger l'opérateur +, il suffit de définir la méthode "__add__" dans la classe de l'objet en question.
De même pour les multiplications, soustractions, etc...
Voir par exemple : https://docs.python.org/3/reference/dat ... eric-types

Mais après réflexion, je me demande si ce n'est pas quelque chose de plus "bas niveau" que tu demandais...
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude parisse » 28 Juin 2020, 10:17

Oui, j'aimerais pouvoir faire cela en code natif pour MicroPython. Sinon, je peux creer un fichier script avec une classe pour representer vecteur et matrice, je mets le script texte sous forme de chaine de caracteres dans le module linalg et je l'evalue par exemple quand on execute la commande array la premiere fois, mais ce n'est pas tres propre. L'avantage de la classe c'est une ecriture plus naturelle pour + - * (et qui serait plus naturelle que dans numpy ou * ne fait pas ce qui est attendu), mais le prix a payer c'est de rajouter une couche et ne pas travailler directement avec des listes ou des listes de listes.

Bref, je ne sais pas trop quoi decider. C'est peut-etre mieux de laisser comme ca, de toutes facons la compatibilite avec numpy restera assez moyenne, pas meilleure que dans l'interpreteur Xcas je pense, numpy n'est pas vraiment un objectif a suivre a mon avis (a cause du * en particulier), alors autant faire de l'algebre lineaire cote Xcas ou les vecteurs/matrices sont naturellement integres et ou il y a plus de commandes a disposition et la possibilite de faire du calcul exact. Ou alors faire 2 modules, un linalg pour travailler avec des listes de listes, l'autre numpy qui encapsule les listes de listes dans une classe si on sait faire en natif et qui viserait a une meilleure compatibilite avec le "vrai" numpy.

Tout ca n'a evidemment d'interet que s'il y a de la demande. Est-ce que les profs de prepa sont interesses pour faire programmer de l'algebre lineaire sur calculatrices? Si oui, sont-ils scotches sur numpy ou sont-ils prets a travailler avec Xcas en syntaxe Python sur des TI nspire CX ou sur Numworks?
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude parisse » 28 Juin 2020, 17:39

Bon, je pense maintenant que la solution la plus simple serait d'avoir le module natif actuel linalg sans la fonction array et un module en Python numpy qui definirait une classe array, avec surcharge des operateurs arithmetiques. Pour que la surcharge marche quand on ecrit 2*M ou M est un array, il est necessaire d'avoir le support de __rmul__, qui n'est pas supporte dans la version de micropython portee par F. Vogt. Du coup j'ai fait une mise a jour vers MicroPython 1.12 qui lui a l'air de supporter rmul. Avec mes modifs cela donne l'archive suivante pour MicroPython: https://www-fourier.univ-grenoble-alpes.fr/~parisse/ti/micropython_nspire.tgz

Il ne reste plus (si j'ose dire) qu'a ecrire le module numpy en Python, pour le moment j'ai juste mis pour tester
Code: Tout sélectionner
from linalg import *
class array:
    def __init__(self, a):
        self.a = a
 
    def __add__(self, other):
        return array(add(self.a , other.a))
 
    def __sub__(self, other):
        return array(sub(self.a , other.a))
 
    def __mul__(self, other):
        if type(self)==array:
            if type(other)==array:
                return array(mult(self.a , other.a))
            return array(mult(self.a,other))
        return array(mult(self,other.a))
   
    def __rmul__(self, other):
        if type(self)==array:
            if type(other)==array:
                return array(mult(self.a , other.a))
            return array(mult(self.a,other))
        return array(mult(self,other.a))

    def __getitem__(self,key):
        return (self.a)[key]
 
    def __str__(self):
        return "array("+str(self.a)+")"
 

A voir comment on veut emuler numpy, y compris sa fonction * foireuse, a mon avis il vaut mieux redefinir * comme la multiplication de matrices comme ci-dessus.
On peut avoir numpy.py.tns dans le repertoire Xcas de la nspire, mais a terme il faut trouver une solution resistante au mode examen (ca pourrait par exemple etre l'insertion dans l'editeur de script de la definition de la classe en ajoutant une option au menu).
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude Adriweb » 28 Juin 2020, 18:16

Ah, bien joué !
Il faudrait hoster le .tns uniquement quelque part de rapidement/facilement accessible pour les utilisateurs, cela dit :)

Et aussi établir ce fork proprement sur github afin de permettre au repo de Vogtinator d'évoluer en 1.12 de manière officielle ? (voir aussi récupérer les autres modifs/ajouts, tant qu'a faire)
Mais peut-etre voudra-t'il faire le rebase proprement par rapport au repo upstream, puis appliquer les patchs par dessus, du moins ca serait bien pour garder l'historique global.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Message non lude parisse » 28 Juin 2020, 18:49

Adriweb a écrit:Ah, bien joué !
Il faudrait hoster le .tns uniquement quelque part de rapidement/facilement accessible pour les utilisateurs, cela dit :)

Quel tns? khicas est toujours a la meme adresse https://www-fourier.univ-grenoble-alpes.fr/~parisse/ti/khicas.zip. Si on veut micropython standalone, il faut supprimer les modules graphic, matplotl, turtle, linalg, cas qui ne linkent que si khicas est present (fichier graphic.c du repertoire nspire). Mais je n'en vois pas trop l'interet, car le shell de micropython.tns et l'editeur pywrite sont moins conviviaux que le shell et l'editeur de KhiCAS, et on perdrait la compatibilite de matplotl, graphic/casioplot/kandinsky et turtle. C'est d'ailleurs probablement pour cette raison d'interface que personne n'avait retouche au port de F. Vogt avant que je me lance, par exemple y integrer le module urandom etait tres simple pour le mettre a niveau avec les ports sur Casio, TI et Numworks.

Et aussi établir ce fork proprement sur github afin de permettre au repo de Vogtinator d'évoluer en 1.12 de manière officielle ? (voir aussi récupérer les autres modifs/ajouts, tant qu'a faire)
Mais peut-etre voudra-t'il faire le rebase proprement par rapport au repo upstream, puis appliquer les patchs par dessus, du moins ca serait bien pour garder l'historique global.

Je laisse ce soin aux gens qui utilisent ces outils. Le fichier changes du repertoire nspire decrit une bonne partie des changements que j'ai fait.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

PrécédenteSuivante

Retourner vers News TI-Nspire

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 167 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1639 utilisateurs:
>1587 invités
>47 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)