le logiciel xcas

Oui, alors je vois déja le jeu de mots bidon que vous allez faire :
"oui si xcass, i va pu revenir".....pfffff
un peu de sérieux je vous prie, et de respect pour cet outil très intéressant .
Il s'agit d'un logiciel de calcul formel, dans lequel on peut aussi faire de la géométrie dynamique, du tableur et de la programmation.
il est téléchargeable ici .


Nous ne verrons dans ces pages, qu'une infime partie de toutes ses possibilités!


le calcul algèbrique et formel

remarques à propos de la syntaxe

Pour taper une racine carré, il faut utiliser la commande sqrt() ( pour SQuared RooT ).
Pour passer les exposants utilisez ^ bien entendu.Le reste viendra intuitivement!
AH.....j'oubliais,pour le produit de fonctions utilisez * , par exemple pour la fonction (x²+2)e(3x) tapez alors (x^2+2)*exp(3x) .
Le symbole de division étant naturellement / .

equation developper-factoriser derivation equations-differentielles fractions-rationnelles systemes-lineaires calcul-numérique les primitives


Utilisation pour résoudre une équation ( tous niveaux )

  • La fonction solve , permet de donner les solutions d'une équation algèbrique du type f(x)=0 .

  • Il donne la ou les solutions exactes de l'équation : tu me crois pas public?
    alors tape solve(x^2-2) tu verras!

  • Parfois il est coincé pour donner la valeur exacte, tout simplement parce qu'il ne la connait pas, alors il donne une valeur approchée ce qui est le cas de l'équation x3-3x-1=0

  • nous verrons qu'il peut aussi donner les solutions complexes d'une équation!
menu généralmenu calcul formel

Utilisation pour le calcul algèbrique ( tous niveaux )

  • La fonction developper , permet, comme son nom l'indique, de développer des expressions algèbriques.

  • La fonction factoriser sert à quoi à ton avis?
    à factoriser une expression, ou à se changer en distributeur de courrier?

  • Dans la mesure ou tout le monde ne sait pas encore ce qu'est un nombre complexe, il se peut que le logiciel donne la factorisation avec plein
    de petits "i" partout partout!
    la parade : taper complex_mode:=0 .

  • le logiciel vous donnera alors la factorisation dans l'ensemble des nombres réels!
    Regardez l'exemple ci contre avec la factorisation de x5 +x4 +x3+ x2+x+1
menu généralmenu calcul formel

Utilisation pour les dérivées et primitives ( premières et terminales )

La fonction deriver() donne la dérivée f' d'une fonction f. sauf qu'il donne son expression "brute", c'est à dire non simplifiée!


  • L'idée est alors de simplifier son expression en utilisant la commande simplify() , sauf que il faudrait réécrire l'expression de f' dans les parenthèses!
    EH t'as vu la tête qu'elle a?



  • alors on peut introduire des variables de la manière suivante :

choisir un nom de variable pour la fonction par exemple f, puis lui affecter l'expression de la fonction en tapant f:=expression de f ( cette étape n'est pas obligatoire, mais vous pourrez rappelez f à tout moment pour un calcul ou autre, c'est l'avantage)

choisir un nom de variable pour la dérivée der par exemple,( on aurait pu prendre chombier ou schmurz), et lui affecter la commande de dérivation : der:=deriver(expression de la fonction).

  • une fois l'expression calculée par Gaston, enfin je veux dire Xcas,si vous voulez la simplifier, il suffit de taper simplify(der)

  • Et si vous voulez factoriser au maximum son expression, ben je crois que vous saurez faire maintenant non?

Il existe cependant d'autres commandes pour simplifier une expression algèbrique : les commandes evala() ou encore normal().

Pour calculer une Primitive de f, il suffit de taper la commande integrer(nom de la fonction).

menu généralmenu calcul formel

Utilisation pour les équations différentielles ( terminales )

  • La fonction deSolve() ,nous donne les solutions d'une équation différentielle.

  • Utilisation : deSolve(y''+y=0,y) résoud l'équation y''+y=0 sans conditions initiales. La solution est f(x)=Co cos(x) + C1 sin(x) où Co et C1 sont simplement des constantes réelles

  • Avec conditions initiales : on écrit deSolve([y'-3y=x*exp(x),y(0)=0],y) pour résoudre l'équation : y'-3y=xex, avec y(0)=0

  • Une remarque : On peut alors simplifier un peu l'expression de la solution en utilisant les commandes dont on a déja parlé evala() ou normal()
  • sur l'exemple ci-contre, j'ai résolu ( enfin pas moi mais Gaston ) l'équation : y'=2y+5 avec y(0)=2 , et ensuite le logiciel a simplifié un peu l'expression avec la commande normal() .

Pour éviter de sortir des solutions dans l'ensemble des nombres complexes ( pour les équations différentielles du second ordre, bon c'est celle où il y a du y'' et du y quoi.....!), taper avant tout calcul complex_mode:=0 .

menu généralmenu calcul formel

Utilisation pour les fractions rationnelles (tous niveaux)

  • La fonction propFrac() transforme l'écriture d'une fraction rationnelle


  • pour revenir à sa forme initiale utilisez la commande normal()

menu généralmenu calcul formel

Utilisation pour les systemes linéaires (tous niveaux)

  • La fonction linsolve() permet la résolution d'un système linéaire.

  • Par exemple si vous devez chercher la solution du système formé des équations x+y+z=1, x-y=2 et 2x-z=3 tapez alors linsolve([x+y+z=1,x-y=2,2*x-z=3],[x,y,z]) les derniers crochets indiquant à Gaston que les inconnues sont bien x,y et z.

  • oui ben, faites pas les malins, vous vous savez que ce sont bien les inconnues, mais si on lui balance un système du type mx+y=a, x+my=b , comment il va faire Gaston pour savoir qui sont les inconnues? alors on va l'aider en tapant
    linsolve([mx+y=a, x+my=b],[x,y]) et PAF!

Pour les élèves de Terminales, cette commande est très pratique pour déterminer une équation paramétrique de la droite intersection de deux plans.
En effet, en tapant linsolve([x+2*y+z=1,3*x+y-z=3],[x,y,z]) , cela va nous donner la droite intersection des deux plans d'équations respectives x+2y+z=1, 3x+y-z=3 . Pratique pour vérifier ses calculs non?


menu généralmenu calcul formel

Utilisation pour le calcul numérique(tous niveaux)

  • La fonction evalf() donne une valeur approchée de l'argument à l'intérieur de la parenthèse.

  • Par exemple si vous cherchez une valeur approchée de pi ,tapez evalf(pi) , ou de racine carrée de 2 , tapez evalf(sqrt(2)) .

  • La commande exact() elle, donne l'écriture sous forme entière ou rationnelle du nombre. en conséquence, si vous désirez avoir un nombre rationnel très proche de pi, ou de racine de carrée de 2 , il suffit alors de taper successivement : f:=evalf(pi) puis exact(f) .

Pas mal non? on récupère donc un nombre rationnel très proche d'un nombre qui lui ne l'est pas ( pi en l'occurence sur mon exemple).

menu généralmenu calcul formel

Utilisation pour le calcul de primitives( terminales )

  • La fonction integrer() permet de donner une primitive F de la fonction f


  • En tapant integrer(x*exp(-2*x)) , Gaston nous ressort une primitive de la fonction f(x)=xe(-2x) .


  • Il peut donner une primitive d'une fonction définie aussi à l'aide d'un paramètre : Par exemple fn(x)=x+2ne(-nx), où le paramètre est l'entier n , et bien il faut préciser pour quelle variable on doit calculer une primitive en tapant integrer(x+2*n*exp(-n*x),x) .Et PAF!

menu généralmenu calcul formel


Utilisation pour l'arithmétique

commandes de bases pgcd-Bezout

commandes de bases ( tous niveaux )

  • La fonction iquorem() donne le quotient et le reste dans la division euclidienne de deux entiers. En tapant iquorem(125,41) , Gaston affiche [3 2] , ce qui signifie que 125=3x41+2

  • La fonction idivis() donne la liste des diviseurs positifs d'un entier.

  • La fonction ifactor() donne la décomposition d'un entier en produit de facteurs premiers.( utile pour le système de codage RSA ......on verra ça plus tard!!!) Par exemple ifactor(50) donnerai 2.5² .

  • La commande ifactors() donne la liste des facteurs premiers présents dans la décomposition du nombre, avec leurs multiplicités . Par exemple ifactors(136) donne [2 3 17 1] , qui signifie que dans la décomposition de 136, il y a un 2 avec une multiplicité de 3, et un 17 avec une multiplicité de 1. En gros ça fait un peu double emploi avec la commande précédente car cela signifie que 136=23.171 . T'as qu'a vérifier avec la commande ifactor() et tu verras public!!!

Une dernière chose : la commande isPrime() renvoie la valeur true si l'entier est premier, et false sinon..

La c'est vraiment la dernière : La commande irem(a,b) renvoie uniquement le reste de la division Euclidienne de a par b . très utile pour les congruences

menu général menu arithmétique

pgcd et Bezout ( Terminales S spé )

  • La commande igcd() Renvoie le pgcd de deux entiers. Il faut donc taper igcd(45,75) pour obtenir le pgcd de 45 et 75...

  • La commande igcdex() renvoie l'identité de Bezout appliquée à deux entiers. Juste pour vous rappeler ce qu'est l'identité de Bezout de a et b :


    • si d désigne le pgcd(a,b), il existe au moins un couple d'entiers (x,y) tels que : ax + by =d .

    • Et bien en balançant par exemple igcdex(30,40) , Gaston va nous afficher
      [-1 1 10] , qui signifie 30*(-1)+40*1=10 , où 10 est le pgcd de 30 et 40. En gros il nous donne une solution particulière pour l'identité de Bezout de ces deux entiers.

  • La commande iabcuv() renvoie un couple solution de l'équation Diophantiène entière : au + bv = c .En gros on lui rentre les valeurs de a,b et c et lui il se débrouille pour chercher un couple (u,v) solution de l'équation au + bv = c . Par exemple iabcuv(21,28,7) donnera [-1 1] , qui signifie bien sûr que 21+(-1)+28*(1)=7 .....étonnant non?

Les équations dans ZxZ du type ax+by=c d'inconnues (x,y), sont étudiées dans le programme de spé.

menu général menu arithmétique

Utilisation pour les graphiques

fonctions suites numériques

fonctions ( tous niveaux )

  • La commande graphe permet de tracer la représentation graphique d'une ou plusieurs fonctions numériques. Il faut donc taper graphe(sin(x),x=-7..7) pour obtenir le graphe de la fonction f(x)=sin(x) sur l'intervalle [-7;7]

  • Avec la commande graphe() , il est possible de tracer plusieurs fonctions sur un même graphique !


  • D'accord, tu me crois pas?
    Alors écoute moi bien public, sois tu me crois, sois tu me crois !
    vas-y, tape graphe([2*x-1,sin(x)],x=-7..7).......


  • Mais comment diable changer les unités du repère? et bien regardez cette petite image .il suffit de cliquer sur le bouton cfg pour configurer les axes !




Il est aussi possible de paramètrer les couleurs en tapant par exemple graphe([2*x-1,sin(x)],x=-7..7,color=[red,yellow]).

menu général menu graphes

suites récurrentes ( premières et terminales )

  • La commande graphe_suite() permet de tracer la représentation graphique d'une suite récurrente.

  • Pour la suite un+1=f(un), avec u0 donné , il faut taper concrètement graphe_suite( expression de f(x),valeur de u0, nombres de termes de la suite )

  • Bon ok, j'ai pigé faut vraiment que je donne un exemple numérique :
    Alors si vous voulez représenter les 10 premiers termes de la suite récurrente un+1=racine(un +2) avec u0=5 , il faudra donc taper graphe_suite(sqrt(2+x),5,10)

menu général menu graphes