π
<-

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

Unread postby Adriweb » 22 Jun 2020, 15:47

Ti64CLi++ wrote: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 ^^

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...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14744
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

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

Unread postby Ti64CLi++ » 22 Jun 2020, 15:49

Adriweb wrote: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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

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

Unread postby parisse » 22 Jun 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.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby parisse » 23 Jun 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.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby parisse » 28 Jun 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!
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby Bisam » 28 Jun 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...
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

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

Unread postby parisse » 28 Jun 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?
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby parisse » 28 Jun 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: Select all
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).
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby Adriweb » 28 Jun 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.

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...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14744
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

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

Unread postby parisse » 28 Jun 2020, 18:49

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

PreviousNext

Return to News TI-Nspire

Who is online

Users browsing this forum: ClaudeBot [spider] and 15 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
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.
786 utilisateurs:
>761 invités
>18 membres
>7 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)