Xcas

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
image illustrant l’informatique image illustrant les mathématiques image illustrant un logiciel libre
Cet article est une ébauche concernant l’informatique, les mathématiques et un logiciel libre.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

Xcas
Logo

Image illustrative de l'article Xcas

Développeur Bernard Parisse
Dernière version 1.2.0 ()Voir et modifier les données sur Wikidata
Écrit en C++Voir et modifier les données sur Wikidata
Environnement Microsoft Windows, Linux, Mac OS X, FreeBSD
Type Calcul formel
Licence Licence publique générale GNUVoir et modifier les données sur Wikidata
Site web site officiel

Xcas (se prononce /ikskas/) est un logiciel libre pour Windows, Mac OS X, Linux et Unix.

Il est développé à l'université Joseph-Fourier de Grenoble (Isère). Xcas est une interface de Giac, une bibliothèque C++ de calcul formel libre (licence GPL). Giac dispose d'un mode de compatibilité avec les logiciels Maple et MuPAD et les calculatrices TI-89, TI-92 et Voyage 200. On peut donc utiliser Giac/Xcas aussi bien comme un logiciel gratuit compatible avec Maple, pour développer des algorithmes de calcul formel, ou l'utiliser dans un autre logiciel…

Xcas est intégré au complément CmathOOoCAS qui permet d'effectuer du calcul formel dans le tableur Calc et dans le traitement de textes Writer de la suite bureautique OpenOffice.org.

Capacités[modifier | modifier le code]

Voici un bref aperçu de ce que Xcas est capable de faire :

  • calcul formel ;
  • géométrie dans le plan ;
  • géométrie dans l'espace ;
  • tableur ;
  • statistiques ;
  • graphiques ;
  • programmation.

Quelques exemples[modifier | modifier le code]

Simulation de la chute d'un objet[modifier | modifier le code]

On utilise les fonction préprogrammées suivantes :

  • int() qui renvoie la primitive d'une fonction.
  • unapply() qui permet d'évaluer une expression selon un paramètre.
  • solve() qui permet de résoudre une équation.
  • plot() qui permet de créer et afficher un graphique.
  • string() qui permet de transformer un objet (exemple : nombre entier) en une chaine de caractère.

Premier modèle : Une chute sans frottement[modifier | modifier le code]

Première méthode : fonction qui retourne un nombre (la vitesse à l'impact)[modifier | modifier le code]

On sait que la gravité terrestre nous fournit une accélération de 9,81 m⋅s-2, donc il suffit de l'intégrer deux fois pour avoir la position.

On notera qu'à la ligne 6, on remplie L avec deux solution : une négative et une positive. On ne prendra que la solution positive, qui se trouve être la deuxième (on utilisera l'indice 1, c'est à dire L[1] (L'indice 0 étant la première solution)).

Code utilisé :

vitesse_chute_1_1(h):={
  local a,v,x,L,temps_chute;
  a(t):=9.81;
  v:=unapply(int(a(t),t),t);
  x:=unapply(int(v(t),t),t);
  L:=solve(x(t)=h,t);
  temps_chute:=L[1]
  retourne v(temps_chute);
}:;

On a donc ici l'appelle de la fonction :

vitesse_chute_1_1(9)

Qui renvoie :

13.2883407542

Qui est bien sur la vitesse (en  m⋅s-1) que l'objet atteint au niveau du sol après une chute sans frottement d'une hauteur de 9 m.

Deuxième méthode : fonction qui retourne une phrase et un graphique[modifier | modifier le code]

On garde la même structure que la fonction vitesse_chute_1_1, mais on ajoute une phrase et un graphique. On met un moins devant la vitesse et la position, car l'objet tombe vers le bas, qui est considéré négatif (l'altitude étant positive vers le haut).

Code utilisé :

vitesse_chute_1_2(h):={
  local a,v,x,L,temps_chute;
  a(t):=9.81;
  v:=unapply(int(a(t),t),t);
  x:=unapply(int(v(t),t),t);
  L:=solve(x(t)=h,t);
  temps_chute:=L[1];
  title="Altitude et vitesse en fonction du temps";
  plot(-x(t),t,0,temps_chute,couleur=2+line_width_6);
  plot(-v(t),t,0,temps_chute,couleur=1+line_width_6);
  retourne "Chute de "+string(h)+" mètres : Vitesse au niveau du sol après "+string(temps_chute)+" secondes de chute : "+string(v(temps_chute))+" m.s^(-1) = "+string(v(temps_chute)*3.6)+" km.h^(-1)";
}:;

On a donc l'appelle de la fonction :

vitesse_chute_1_2(9)

Qui renvoie :

Capture d'écran 2016-02-24 12.32.41.png

Ainsi qu'un graphique :

Vitesse (rouge) et position (vert) d'un objet faisant une chute de 9 mètre sans frottement (dans une gravité terrestre).

Deuxième modèle : Une chute dans l'air avec frottement du type proportionnel (à la vitesse) : [modifier | modifier le code]

Cette fois ci, on prend en compte la force de frottement  : les fonctions donnant la vitesse et la position ont été calculées manuellement, grâce au principe fondamental de la dynamique.

On trouve les fonctions (du temps) suivantes :

    • Avec
    • Avec

NB : On prend en supposant que et que la vitesse terminale (vitesse maximale lors de la chute) de cette masses est de 200 km⋅h-1.

De plus, on ne met pas de moins devant la vitesse et la position, car le signe a déjà été pris en compte dans la réalisation des formules.

Code utilisé :

vitesse_chute_2(h):={
  local g,v,x,L,temps_chute;
  g:=9.81:;
  k:=12.4;
  m:=70:;
  v:=unapply((m*g)/k*(exp((-t)*(k/m))-1),t);
  x:=unapply(g*(m/k)^2*(1-e^((-t)*(k/m)))-(m*g*t)/k,t):;
  L:=solve(x(t)=-h,t)
  temps_chute:=L[0];
  title="Chute de 70 kg de 9 mètre : altitude (vert) et vitesse (rouge) en fonction du temps : (épais = sans frottement ; fin = avec frottements)";
  plot(v(t),t,0,temps_chute,couleur=1);
  plot(x(t),t,0,temps_chute,couleur=2);
  retourne 0;
}:;

On a donc l'appelle de la fonction :

vitesse_chute_2(9)

Qui renvoie :

0

(Qui est juste présent pour vérifier que la fonction a été lue jusqu'au bout.)

Ainsi qu'un graphique :

Vitesse (rouge) et position (vert) d'un objet faisant une chute de 9 mètre avec frottement proportionnel à la vitesse (dans une gravité terrestre).

Superposition des deux modèles[modifier | modifier le code]

Vitesse (rouge) et position (vert) d'un objet de 70 kg faisant une chute de 9 mètre avec (trais fins) et sans (trais épais) frottement proportionnel à la vitesse, ceci dans une gravité terrestre.

On constate que les deux graphiques (avec et sans frottement) sont effectivement différents ; l'accélération n'est pas constante dans le cas du frottement : la vitesse (rouge) tend à se stabiliser (pour devenir horizontale).

Liens externes[modifier | modifier le code]