χ\chiCAS(io)

Bernard.Parisse@ujf-grenoble.fr

2018

Table des matières

Résumé: Ce document explique comment prendre en main et utiliser efficacement sur calculatrices Casio Graph 90+e le système de calcul formel χ\chiCAS, une version adaptée du logiciel Xcas pour cette calculatrice.

Ce document est interactif, vous pouvez modifier les commande et voir le résultat de l’exécution des commandes proposées en exemple en cliquant sur le bouton ok (ou en validant avec la touche Entrée).

1  Installation

Pour installer ou mettre à jour χ\chiCAS, récupérez sur votre ordinateur le fichier khicas.g3a

Branchez le cable USB de la calculatrice, tapez F1 pour que la calculatrice soit considérée comme une clef USB et copiez le fichier khicas.g3a sur la “clef”-calculatrice puis suivre la manipulation de votre ordinateur qui permet de débrancher une clef USB en toute sécurité. Le transfert s’effectue en quelques secondes.

Si vous testez sur l’émulateur (PC, Mac), depuis le menu principal de la calculatrice (MENU), allez à Mémoire, puis F3 (Import/Export), puis F1 (Import files), puis sélectionnez le fichier à transférez depuis le disque dur de votre ordinateur, tapez F1 pour sauvegarder sur la racine de la calculatrice, confirmez par F1 si vous effectuez une mise à jour. Le transfert est relativement long (plusieurs minutes) sur l’émulateur.

Une fois le transfert terminé, une nouvelle icone (avec le flocon de Xcas) apparait dans le menu principal.

2  Premiers pas

Depuis le menu principal, déplacez le curseur jusqu’à l’icone de Xcas, puis tapez EXE. Ceci ouvre un “shell” dans lequel vous pouvez taper la plupart des commandes de calcul formel de Xcas.

Par exemple, tapez 1/2+1/6 puis EXE, vous devriez voir le résultat 2/3 s’afficher sur la ligne du dessous.

Vous pouvez recopier dans la ligne de commande une commande de l’historique en utilisant le curseur vers le haut ou vers le bas puis EXE, puis vous pouvez modifier la commande et l’exécuter. Par exemple, taper sur la touche curseur vers le haut, EXE et remplacez 1/6 par 1/3.

Vous pouvez utiliser le résultat de la dernière commande avec la touche Ans de la calculatrice (taper sur shift puis (-)). Il vaut en général mieux définir une variable comme résultat d’une commande si on souhaite la réutiliser. Pour cela, on utilise une des deux instructions d’affectation :

Si vous commencez une ligne de commande en tapant la touche \rightarrow, le système insére automatiquement Ans=> ce qui permet facilement de donner un nom au résultat d’une commande.

Pour vous aider à saisir les commandes Xcas les plus utiles, χ\chiCAS dispose d’un catalogue d’une centaine de commandes, avec une courte description et le plus souvent un exemple d’exécution facile à recopier. Appuyez sur la touche F4 (CATALOG), choisissez une catégorie avec le curseur, par exemple Algebre, tapez EXE, puis choisissez une commande avec le curseur, par exemple factor. La touche F6 vous affiche une courte description de la commande, en général avec un exemple. En tapant sur F2, vous recopiez l’exemple en ligne de commande. Vous pouvez alors valider (EXE) ou modifier la commande et valider (EXE) pour factoriser un autre polynôme que celui donné en exemple.

Lorsqu’une commande renvoie une expression, celle-ci est affichée en écriture naturelle (affichage 2-d). Vous pouvez faire défiler l’affichage avec les touches du curseur lorsque l’expression est grande. Tapez sur EXIT pour revenir au shell.

Maintenant essayez de taper la commande plot(sin(x)). Indication: taper F4 (CATALOG), puis sélectionner Graphiques.

Lorsqu’une commande renvoie un graphe, celui-ci est affiché. Vous pouvez modifier la fenêtre graphique d’affichage avec les touches + ou - (zoom in ou out, utiliser la touche (-) pour faire un zoom out partiel selon l’axe OyOy), les touches du curseur, orthonormaliser le repère (touche /) ou faire une recherche automatique de l’échelle (autoscale touche *). Pour enlever ou remettre les axes et graduations, tapez sur VAR ou OPTN. Tapez sur EXIT pour revenir au shell.

Vous pouvez effacer l’historique des calculs et les variables pour commencer un nouvel exercice : depuis le menu Fich,Cfg (F6) sélectionnez 5 Clear. L’écran est effacé et le message /* DEL EXE to */ restart? apparait. Tapez ON pour effacer l’écran en conservant les variables, tapez DEL puis EXE pour effacer les variables.

Pour quitter χ\chiCAS, appuyez sur la touche MENU. Lorsque vous lancez une autre application, les variables et l’historique des calculs sont sauvegardés, ils seront restaurés lorsque vous reviendrez dans χ\chiCAS (sauf si vous désactivez la sauvegarde depuis le menu Fich,Cfg (F6 9)). La première sauvegarde peut prendre du temps sur l’émulateur (une dizaine de secondes), ensuite les sauvegardes sont plus rapides. De manière plus générale, la calculatrice exécute les calculs plus rapidement que l’émulateur (parfois 3 ou 4 fois plus vite).

Il est conseillé d’appuyer sur MENU avant d’éteindre la calculatrice, sinon lorsqu’on rallume la calculatrice, il arrive qu’une commande saisie précédamment s’ajoute, dans ce cas taper sur AC/ON pour vider la ligne de commande.

3  Commandes usuelles de calcul formel

3.1  Développer et factoriser

Depuis le catalogue, sélectionner le sous-menu Algebre

3.2  Analyse

Depuis le catalogue, sélectionner le sous-menu Analyse

3.3  Résoudre

Depuis le catalogue, sélectionner le sous-menu Resoudre.

3.4  Arithmétique

Lorsque cela est nécessaire, on distingue l’arithmétique des entiers de celle des polynômes par l’existence du préfixe i (comme integer) dans un nom de commande, par exemple ifactor factorise un entier (pas trop grand) alors que factor factorise un polynôme (et cfactor factorise un polynôme sur les complexes). Certaines commandes fonctionnent à la fois pour les entiers et les polynômes, par exemple gcd et lcm.

3.4.1  Entiers

Depuis le catalogue, sélectionner le sous-menu Arithmetic, Crypto

Les commandes asc et char permettent de convertir une chaine de caractères en liste d’entiers (entre 0 et 255) et réciproquement, ce qui permet de faire facilement de la cryptographie avec des messages sous forme de chaines de caractères.

3.4.2  Polynômes

Depuis le catalogue, sélectionner le sous-menu Polynomes. La variable est par défaut xx, sinon il faut la spécifier en général en dernier argument, par exemple degree(x^2*y) ou degree(x^2*y,x) renvoient 2, alors que degree(x^2*y,y) renvoie 1

3.5  Algèbre linéaire, vecteurs, matrices

Xcas ne fait pas de différence entre vecteur et liste. Par exemple pour faire le produit scalaire de deux vecteurs, on peut saisir :

v:=[1,2]; w:=[3,4]

onload

Pour saisir une matrice élément par élément, taper sur shift-MATR ou F6 4 (editer matrice). Vous pouvez ensuite créer une nouvelle matrice ou éditer une matrice existante parmi la liste de variables proposées. Pour de petites matrices, vous pouvez aussi entrer en ligne de commandes une liste de listes de même taille. Par exemple pour définir la matrice A=(1 2 3 4)A=\left(\begin{array}{cc} 1 & 2 \\ 3 & 4 \end{array}\right) on tape

A:=[[1,2],[3,4]]

onload
ou

Il est fortement conseillé de stocker les matrices dans des variables pour éviter de les saisir plusieurs fois.

Pour entrer une matrice dont les coefficients sont donnés par une formule, on peut utiliser la commande matrix, par exemple

renvoie la matrice dont le coefficient ligne jj et colonne kk vaut 1j+k+1\frac{1}{j+k+1} (attention les indices commencent à 0).

La matrice identité de taille nn est renvoyée par la commande idn(n), alors que ranm(n,m,loi,[parametres]) renvoie une matrice à coefficients aléatoires de taille n,mn,m. Par exemple



Pour exécuter une commande sur des matrices, s’il s’agit d’arithmétique de base (+,-,* inverse), on utilise les opérations au clavier. Pour les autres commandes. depuis le catalogue, sélectionner le sous-menu Alglin, Matrices

4  Probabilités et statistiques

4.1  Tirages aléatoires

Depuis le catalogue, sélectionner le sous-menu Probabilites puis sélectionnez
(réel selon la loi uniforme dans [0,1][0,1]) ou
(entier entre 1 et nn). De nombreuses autres fonctions aléatoires existent, avec comme préfixe rand, suivi par le nom de la loi, par exemple randbinomial(n,p) renvoie un entier aléatoire selon la loi binomiale de paramètres n,pn,p. Pour créer un vecteur ou une matrice aléatoire, utiliser la commande ranv ou ranm (menu Alglin, Matrice), par exemple pour un vecteur de 10 composantes selon la loi normale centrée réduite

4.2  Lois de probabilités

Depuis le catalogue, sélectionner le sous-menu Probabilites (8). Les lois proposées dans le catalogue sont la loi binomiale, la loi normale, la loi exponentielle et la loi uniforme. D’autres lois sont disponibles hors catalogue : chisquared, geometric, multinomial studentd, fisherd, poisson.

Pour obtenir la distribution cumulée d’une loi, on saisit le nom de la loi et le suffixe _cdf (sélectionner cdf dans le catalogue sous-menu Probabilités et taper F1). Pour obtenir la distribution cumulée inverse, on saisit le nom de la loi et le suffixe _icdf (sélectionner cdf dans le catalogue sous-menu Probabilités et taper F2).

Exemple : calcul de l’intervalle centré II pour la loi normale de moyenne 5000 et d’écart-type 200 tel que la probabilité d’être en-dehors de II soit de 5% :

4.3  Statistiques descriptives 1-d

Ces fonctions agissent sur des listes par exemple

l:=[9,11,6,13,17,10]

onload
Depuis le catalogue, sélectionner le sous-menu Statistiques.

Pour les statistiques 1-d de listes avec effectifs, on remplace l par deux listes de même longueur, la 1ère liste est la liste des valeurs de la série statistique, la 2ème liste est la liste des effectifs. Voir aussi les commandes du menu Graphique histogram et barplot.

4.4  Statistiques descriptives 2-d

Depuis le catalogue, sélectionner le sous-menu Statistiques.

5  Graphes

Depuis le catalogue, sélectionner le sous-menu Graphiques (accès rapide par la touche 7).

On peut tracer simultanément plusieurs graphiques, il suffit de séparer les commandes de tracé par ;

La touche OPTN vous permet de spécifier certaines options graphiques :

6  Programmation

Vous pouvez programmer en utilisant les structures de commande en français de Xcas ou en utilisant la compatibilité de syntaxe Python. Les programmes très courts (en une ligne) peuvent être saisis directement en ligne de commande. Les programmes plus longs ou que l’on souhaite sauvegarder seront saisis dans l’éditeur de programmes sur la calculatrice, ou bien transférés depuis un PC ou une autre calculatrice.

6.1  Utilisation en exemples

Un premier exemple en ligne de commande :
une fonction définie par une expression algébrique. On saisit nom_fonction(parametres):=expression Par exemple, pour définir le périmètre d’un cercle de rayon rr, on peut taper
puis on peut calculer
.

Autre exemple, pour calculer l’intervalle de confiance de seconde connaissant une fréquence pp et un effectif nn, on tape


puis on teste

Autre exemple : avec la tortue de Xcas
La tortue de Xcas est un petit robot qui se déplace selon des ordres qui lui sont donnés en laissant une trace de son passage. Les commandes de la tortue sont accessibles depuis le dernier item du menu F6, ou par le raccourci shift-QUIT. Saisir la commande avance dans ce menu puis valider, vous devez voir la tortue (symbolisée par un triangle) avancer de 10 pixels. Taper EXIT pour revenir en ligne de commande. Saisir la commande tourne_gauche et valider, la tortue a tourné de 90 degrés. Répéter 3 fois ces deux commandes pour afficher un carré.
Pour effacer le dessin et ramener la tortue à l’origine, saisir la commande efface. Pour faire des dessins tortue, il est conseillé d’utiliser l’éditeur de programmes (cf. ci-dessous).

Autre exemple : une boucle “oneliner” en syntaxe Xcas.
Tapez shift-PRGM, puis sélectionnez l’exemple de pour

tapez sur EXE, vous devez voir les carrés des entiers de 1 à 10.

Exercice : faire faire un carré à la tortue en utilisant une boucle.

Utilisation de l’éditeur
Modifions cet exemple pour faire afficher les carrés de 1 à nn en utilisant la syntaxe compatible Python et l’éditeur de programmes. Vérifiez que la syntaxe Python est cochée (F6), sinon cochez-la (7). Tapez F6 (Fich,Cfg) puis nouveau programme, puis tapez F5 pour bloquer en mode alphabétique minuscules, puis par exemple test puis EXE. Ceci crée un fichier test.py et ouvre l’éditeur avec une maquette de fonction def f(x):. Remplacez x par n, puis déplacez le curseur en fin de ligne et passez à la ligne (EXE). Tapez Shift-PRGM puis 3 for, puis F5 J espace alpha, puis Shift-PRGM puis 6 in range(a,b) puis tapez 1,n+1) puis F1 pour :, puis EXE pour passer à la ligne, puis Alpha SPACE, F4 (CATALOG), EXE (1 Tout), P, déplacez la surbrillance avec le curseur vers le bas sur print et validez (EXE), puis tapez j,j^2). Vous devriez avoir le programme suivant :

def f(n):
  for j in range(1,n+1):
    print(j,j^2)


N.B.: pour la puissance, on peut utiliser ^ ou ** dans KhiCAS (il faut utiliser ** en Python).

Maintenant, tapez F6 (Fich,Cfg) et sélectionnez 1. Tester syntaxe. Si tout va bien, vous devez voir Success dans la ligne d’état. Sinon, le numéro de ligne de la première erreur est indiqué ainsi que le mot qui a provoqué l’erreur. Le curseur est positionné sur la ligne où l’erreur a été détectée (il peut arriver que l’erreur soit située avant mais détectée un peu plus loin seulement). Si vous utilisez la syntaxe en Python, notez que les structures de programmation sont traduites en langage Xcas, les erreurs affichées le sont par rapport à cette traduction (donc des mots-clefs de fin de structure comme end peuvent avoir été ajoutées).

Si le programme est syntaxiquement correct, vous pouvez le sauvegarder depuis le menu F6 (Fich,Cfg). Pour l’exécuter, revenez à la ligne de commande en tapant la touche EXIT, tapez par exemple f(10), vous devriez voir s’afficher les carrés de 1 à 10.

3ième exemple : Calcul de l’intervalle de confiance de terminale S
On peut le saisir en ligne de commande
On peut éviter les calculs redondants en utilisant une variable locale (utiliser shift-PRGM pour saisir fonction, local, return et ffonction)

fonction F(P,N) 
  local D; 
  D:=1.96*sqrt(P*(1-P)/N); 
  return [P-D,P+D]; 
ffonction;


Exercice  Créez un fichier carre.py contenant un script pour afficher un carré avec la tortue. Créez un fichier carren.py pour afficher un carré de nn pixels, en utilisant une fonction d’argument nn et l’instruction repete.

Solution  Faire F6, Nouveau programme, choisir Tortue ce qui crée un script contenant l’instruction efface. Ajouter 4 fois avance; tourne_gauche;. Appuyer sur F6 puis EXE (ou directement sur la touche ON) pour tester. Quitter avec EXIT (et sauvegardez avec F1).

Refaire F6, nouveau programme, Tortue. Ajouter avant la ligne efface

def f(n):
  for j in range(4):
    avance(n)
    tourne_gauche

puis après la ligne efface; tapez par exemple f(40) puis F6 1 Tester syntaxe.

Un exemple de fonction non algébrique : le calcul du PGCD de 2 entiers.
Utiliser shift-EXE pour passer à la ligne. Le caractère ! est accessible depuis le menu Programmation_cmds (11, raccourci X,θ,tX,\theta,t). En syntaxe Xcas

fonction pgcd(a,b)
  tantque b!=0 faire
    a,b:=b,irem(a,b);
  ftantque;
  return a;
ffonction


Le même en syntaxe Python

def pgcd(a,b):
  while b!=0:
    a,b=b,a % b
  return a


On vérifie

Mise au point
La commande debug permet d’exécuter une fonction en mode pas-à-pas, i.e. visualiser l’évolution des variables instruction par instruction, par exemple
debug(pgcd(12345,3425))

6.2  Quelques exemples

Le répertoire prog de l’archive khicasio.zip contient quelques exemples de TP pour classes de seconde de l’IREM de Grenoble :

ainsi que quelques autres programmes (avec fréquemment une représentation graphique) :

6.3  Commandes utilisables

Contrairement aux adaptations de MicroPython proposées par les constructeurs (dont celui de la Casio Graph 90+e), la programmation en (simili-)Python dans KhiCAS n’est pas une application indépendante. Vous pouvez donc utiliser tous les types de Xcas (par exemple les rationnels) et appliquer toutes les commandes de Xcas dans vos programmes. Ceci correspond plus ou moins à un environnement Python avec les modules math, cmath, random (plus complet que le module urandom fourni par les constructeurs), scipy, numpy, un petit module de graphiques pixelisé (set_pixel(x,y,c), set_pixel() pour synchroniser l’affichage, clear(), draw_line(x1,y1,x2,y2,c), draw_polygon([[x1,y1],[x2,y2],...],c), draw_rectangle(x,y,w,h,c), draw_circle(x,y,r,c), la couleur+epaisseur+remplissage c est un paramètre optionnel, draw_arc(x,y,rx,ry,t1,t2,c) permet de tracer un arc d’ellipse). et pour remplacer matplotlib on peut utiliser les commande graphiques dans un repère de χ\chiCAS (point, line, segment, circle, barplot, histogram et les commandes plot...). De plus, vous pouvez travailler avec des expressions et faire du calcul formel dessus. La liste complète des commandes portées se trouve en annexe, pour une présentation détaillée, on renvoie à la documentation de Xcas.

7  Raccourcis claviers.

Dans l’éditeur de programmes :

8  Remarques

Cette adaptation n’est pas une version complète de Xcas, la taille maximale d’un add-in Casio (actuellement de 2 Mo) ne permet malheureusement pas de tout proposer ni de donner une documentation complète. Il existe des adaptations de Xcas plus complètes sur des calculatrices d’autres constructeurs, mais uniquement sur des modèles de haut de gamme pour le moment. On renvoie à la page home de Giac/Xcas pour plus de détails.

9  Copyright et Remerciements

10  À propos du développement.

Pour développer cet add-in, j’ai installé le cross-compiler gcc pour processeur sh3eb, en m’inspirant de ce tutoriel. On télécharge gcc puis (remplacer la version de gcc par la version téléchargée)
../gcc-5.3.0/configure --target=sh3eb-elf --prefix="$HOME/opt/sh3eb-elf" --disable-nls --disable-shared --disable-multilib --enable-languages=c,c++ --without-headers
Malheureusement, il n’y a pas de support pour sh3eb dans la newlib (librairie C) fournie avec gcc, encore moins pour la libstdc++.

J’ai donc installé libfxcg.tar.gz, quelque peu modifiée par mes soins (corrections de plusieurs petits bugs dans la librairie C, ajout de fonctions manquantes comme qsort, ...), à récupérer dans ce répertoire (désarchiver et compiler avec make). Toujours dans ce répertoire, on trouve tommath.tgz (gestion des entiers multi-précision) et ustl.tar.gz (implémentation de la standard template library) que j’ai du pas mal modifier pour le faire fonctionner avec sh3eb-elf-g++, avec un résultat partiel qui est suffisant pour porter Giac (support de vector/string/map mais pas des flux E/S fichiers, j’ai créé à part un fichier iostream pour avoir un ersatz de cin/cout). Tout ceci se désarchive et compile avec make.

Une version compilée pour GNU/Linux debian 9 de gcc pour sh3eb ainsi que des librairies additionnelles se trouvent dans mon répertoire Casio (fichier sh3eb-elf.tar.gz).

Enfin, le port de Giac se trouve dans le fichier khicas.tgz. Le script servant à compiler est mkxcas. Comme il n’y a pas de support du compilateur pour la newlib et la libstdc++, ce portage de Giac se caractérise par l’absence de variables statiques classes, il n’y a que des variables statiques C. La très grande majorité des variables globales (tous les noms de commandes Xcas par exemple) sont déclarées via des alias sur des structures C en constantes pour ne pas occuper de place en mémoire vive. Il a fallu tenir compte de l’endianness du CPU par rapport à d’autres portages de Giac (plus précisément le CPU peut se comporter des deux manières little ou big endian mais on est obligé de choisir le même ordre que celui de l’OS Casio, et c’est l’inverse de celui qu’on rencontre sur les architectures Intel).

A  Liste des commandes

Vous pouvez tester une commande dans la ligne de commande située en bas de ce document. Pour avoir de l’aide sur une commande, cliquez sur le bouton + pour augmenter la taille de la console du document, puis tapez ? suivi par le nom de commande.

  

Retour à la page principale de Giac/Xcas.