Xcas vs Geogebra

Geogebra est un logiciel de géometrie dynamique 2-d qui dispose de certaines fonctionnalités algébriques ainsi que d'un tableur et a donc certaines fonctionnalités en commun avec Xcas:
  1. Les objets géometriques sont dans un repère cartesien. Ils peuvent etre créés à la souris ou par une saisie en ligne de commandes. On peut effectuer des opérations sur les caractéristiques numériques d'un objet geometrique (par exemple calculer le produit de l'abscisse d'un point par la pente d'une droite).
  2. Ce sont tous deux des grapheurs : on peut créer des objets non purement géometriques, comme des graphes de fonction, et effectuer des opérations comme prendre une tangente à une courbe. On peut ensuite effectuer des opérations géometriques sur les objets crées (par exemple prendre l'intersection de la tangente avec un cercle)
  3. Ce sont bien sur des environnements dynamiques, on peut faire bouger un objet géometrique ou un curseur et observer la modification de la figure et des caractéristiques numériques des objets géometriques.
Abordons maintenant les différences: en résumé, Geogebra met l'accent sur la facilité d'utilisation, Xcas sur les fonctionnalites et la rapidité. Plus en détails:
  1. L'interaction logiciel-utilisateur est d'abord concue pour la souris et la géométrie dans Geogebra, pour le clavier (ligne de commande) et le calcul formel dans Xcas.
  2. La version usuelle de Geogebra n'a qu'un noyau de calcul formel minimal en géométrie. Par exemple, les fractions d'entiers sont converties en nombres décimaux, on ne peut pas faire du calcul avec des coordonnées paramétriques (et ce meme avec la version CAS de geogebra).
  3. Geogebra ne fait pas la différence entre fonction et expression. Cela peut paraitre plus simple en premier lieu, mais pose des problèmes de dépendance (paramètre ou argument).
  4. Un tableur formel est par nature plus lent à évaluer qu'un tableur non formel parce que les cellules ont une plus grande diversité de type et parce que l'évaluation est elle-même plus lente en particulier si on effectue des calculs exacts (fractions voire formules plus complexes). Si on ajoute à cela, la couche java de Geogebra, on comprend que le tableur de Geogebra ne puisse pas gérer de grandes feuilles de calcul (il vaut mieux ne pas dépasser le millier de cellules). Le tableur de Xcas, sans être aussi rapide que celui d'OpenOffice, permet de gérer des tableaux de l'ordre de 10 000 cellules. D'autre part, le tableur de Geogebra n'est pas formel, on ne peut pas par exemple calculer la dérivée d'une cellule par rapport à une autre cellule et il n'y a pas de distinction entre fonction et expression. Enfin, toute cellule de Geogebra est susceptible d'etre représentée dans l'écran de géométrie, alors que dans le tableur de Xcas, seule les cellules dont la valeur renvoyée est géométrique sont représentées.
  5. Il n'y a pas à l'heure actuelle de géometrie dans l'espace dans la version stable de Geogebra.
  6. Il n'y a pas de langage de programmation dans la version usuelle de Geogebra.
  7. Concernant les nombres complexes: il y a confusion entre complexe et point dans Geogebra, donc pas de commande affixe, et des bizarreries (les réels ne sont pas représentés sur la figure, il faut explicitement les modifier en complexes de partie imaginaire nulle).
  8. Dans Geogebra, il n'est pas possible d'exprimer les caractéristiques analytiques d'un objet géometrique en fonction de la valeur formelle d'un curseur, ce qui empêche de faire faire les calculs nécessaires à une démonstration en géométrie analytique.
  9. Il n'est pas possible de sauvegarder en mode texte les commandes correspondants à une figure donnée (le format de sauvegarde est opaque et rend difficile l'utilisation d'un autre logiciel avec les mêmes données, par exemple l'écriture d'un filtre permettant d'importer une figure Geogebra dans Xcas).
Equivalents Xcas de commandes Geogebra (à compléter):
Booleens

Si[condition,a,b] si condition alors a sinon b fsi;
Si[condition,a] si condition alors a fsi;
Nombres

Longueur[vecteur v] l2norm(v)
Longueur[point A] distance(0,A)
Longueur[fonction f,nombre x1,nombre x2] int(sqrt(1+f'^2),x=x1..x2)
Longueur[fonction f,point A,point B] int(sqrt(1+f'^2),x=abscisse(A)..abscisse(B))
Longueur[courbe c,nombre t1,nombre t2] int(abs(diff(z(t),t)),t=t1..t2)
Longueur[liste L] size(L)
Aire[point A,point B,point C, ...] aire(A,B,C,...)
Distance[point A,point B] distance(A,B)
Distance[point A,ligne g] distance(A,g)
Distance[ligne g,ligne h] distance(g,h)
Reste[nombre a,nombre b] irem(a,b)
Quotient[nombre a,nombre b] iquo(a,b)
Pente[ligne g] pente(g)
Courbure[point A,fonction f]
Rayon[cercle c] rayon(c)
Circonférence[conique c] perimetre(c) (cercle)
Paramètre [parabole p] voir conique_reduite
LongueurPremierAxe[conique c] voir conique_reduite
LongueurSecondAxe[conique c] voir conique_reduite
ExcentricitéLinéaire[conique c] voir conique_reduite
Intégrale[fonction f,nombre a,nombre b] int(f(x),x=a..b)
SommeInférieure[fonction f,nombre a,nombre b,nombre n], Superieure
plotarea(f(x),x=a..b,rectangle_droit)
rectangle_gauche, point_milieu, trapezes
Itération[fonction f,nombre x0,nombre n] (f@@n)(x0)
Min[nombre a,nombre b], Max
min(a,b), max(a,b)
RapportColinéarité[point A,point B,point C] (C-A)/(B-A)
Birapport[point A,point B,point C,point D] birapport(A,B,C,D)
Angle

Angle[vecteur v1,vecteur v2] arg(affixe(v2))-arg(affixe(v1))
Angle[ligne g,ligne h]
Angle[point A,point B,point C] angle(B,A,C)
Angle[point A,point B,angle alpha]
Point

Point[ligne g], conique c, fonction f, polygone p
element(g), element(c), element(graphe(f)),
element(p)
Point[point P, vecteur v] translation(v,P)
MilieuCentre[point A,point B] milieu(A,B)
MilieuCentre [segment s] milieu(sommets(s))
Centre[conique c] centre(c) cercle
Foyer[conique c] voir conique_reduite
CentreGravité[polygone poly] isobarycentre(A,B,C,...) isobarycentre(sommets(poly))
Intersection[ligne g,ligne h] inter_droite(g,h)
Intersection[objet a,objet b,entier n]
inter(a,b)[n]
Racine[polynôme p] proot(p)
Racine [fonction f,nombre a] fsolve(f(x),x=a,newton_solver)
Racine [fonction f,nombre a,nombre b] fsolve(f(x),x=a..b,falsepos_solver)
Extremum[polynôme f] apply(x->point(x,f(x)),proot(diff(f(x),x))  (si f fonction)
apply(x->point(x,eval(p,x)),proot(p')) (si p expression dependant de la variable x)
Inflexion[polynome f]
apply(x->point(x,f(x)),proot(diff(f(x),x,2))  (si f fonction)
apply(x->point(x,eval(p,x)),proot(p'')) (si p expression dependant de la variable x)
Vecteur

Vecteur[point A,point B] B-A (complexe) ou vecteur(A,B)
Vecteur[point A] affixe(A) (complexe) ou vecteur(0,A)
Direction[ligne g] 1+i*pente(g) ou vecteur(1+i*pente(g))
VecteurUnitaire [vecteur v] v/abs(v) ou normalize(v)
VecteurOrthogonal[vecteur v] i*v ou vecteur(i*affixe(v))

























































































N.B.: si vous relevez des inexactitudes, n'hésitez pas à les indiquer sur le forum de Xcas!