XCAS et Sage

Utilisation de Xcas

Modérateur : xcasadmin

Guillaume
Messages : 112
Inscription : sam. janv. 20, 2007 8:48 pm
Contact :

XCAS et Sage

Message par Guillaume » jeu. janv. 03, 2013 4:49 pm

Bonjour à tou(te)s et bonne année,

je suis actuellement sur une 3eme édition de "Visa pour la prépa" chez Dunod qui doit être adaptée aux nouveaux programmes et, en ce qui nous concerne, c'est la fin du monopole de Maple qui nous intéresse. C'est le couple python/scilab qui a été officiellement retenu. Comme ce n'est pas très enrichissant point de vue calcul formel, je vais donc utiliser Sage dans le bouquin et plus xcas comme avant qui était compatible avec Maple. Trahison ? Non, bien sûr...C'est une obligation car la syntaxe de programmation de Sage est celle de Python. Mais cela permet malgré tout de rester fidèle à XCAS grâce à l'effort de Frédéric d'introduire giac dans l'usine à gaz Sage. Et c'est très utile!
Par exemple, Sage (ici par défaut maxima) sèche sur cet exemple:

Code : Tout sélectionner

sage: solve(abs(11+2*I) - abs(x+1+5*I),x)
[abs(x + 5*I + 1) == 5*sqrt(5)]
alors que si giac est appelé à la rescousse, tout s'arrange :

Code : Tout sélectionner

sage: giac.solve(abs(11+2*I) - abs(x+1+5*I),x)
list[-11,9]
Cette entrée dans Sage devrait ouvrir des portes internationales à giac...

parisse
Messages : 5740
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: XCAS et Sage

Message par parisse » ven. janv. 04, 2013 7:55 am

Si j'ai bien compris c'est l'abandon complet du calcul formel en prépa (il n'y aura même pas de choix pour les logiciels)? Pas si étrange que ça finalement, parce que j'imagine que la grande majorité des profs de maths n'en veulent pas (pas de raison que ça soit différent de la fac sur ce point). J'imagine que le lobby scilab/inria a du aussi bien fonctionner. Mais je trouve que ça pose quand même sacrément question sur la formation qu'on donne.
Bon, il va falloir peut-etre que je me penche un jour sur une interface native en python.

Guillaume
Messages : 112
Inscription : sam. janv. 20, 2007 8:48 pm
Contact :

Re: XCAS et Sage

Message par Guillaume » ven. janv. 04, 2013 1:05 pm

En fait, le couple python/scilab (à quoi sert scilab là-dedans puisqu'il y a scipy et numpy...peut-être effectivemennt pour satisfaire un certain lobby...) est évoqué pour l'informatique pour tous (2h en 1ère année et 1h en 2ème). Je ne sais pas trop pour le reste. Il y avait des projets affichés ici :
http://www.enseignementsup-recherche.go ... -cpge-2013
mais ils ont disparu...
En ce qui concerne Sage, c'est toujours compliqué de l'installer sur windows.

Alek
Messages : 111
Inscription : jeu. oct. 28, 2010 1:20 pm

Re: XCAS et Sage

Message par Alek » ven. janv. 04, 2013 3:24 pm

parisse a écrit : Bon, il va falloir peut-etre que je me penche un jour sur une interface native en python.
Ca veut dire accepter la syntaxe python en xcas ?
Ce serait génial !
A.

Guillaume
Messages : 112
Inscription : sam. janv. 20, 2007 8:48 pm
Contact :

Re: XCAS et Sage

Message par Guillaume » ven. janv. 04, 2013 5:06 pm

Je m'aperçois que giac est plus performant (simple d'utilisation, rapide) que sage dans de nombreux domaines des maths lycée + L1/2 : sage a en effet fait beaucoup d'efforts pour les maths niveau recherche mais se repose un peu sur un maxima basique ailleurs. Bernard a fait au contraire d'énormes efforts pour ces maths lycée +L1/2 (sûrement ailleurs aussi mais je n'ai pas trop testé). J'essaie d'alerter la communauté sage française à ce sujet...

parisse
Messages : 5740
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: XCAS et Sage

Message par parisse » ven. janv. 04, 2013 5:39 pm

Alek a écrit :
parisse a écrit : Bon, il va falloir peut-etre que je me penche un jour sur une interface native en python.
Ca veut dire accepter la syntaxe python en xcas ?
Ce serait génial !
A.
Je ne pensais pas a ca, mais à créer un module, appelons-le caspy, qu'on pourrait importer depuis python sans avoir à installer quelque chose d'aussi gros que sage. Un peu comme sympy, mais avec giac comme noyau pour assurer des performances décentes.
Utiliser la syntaxe python dans xcas, ça suppose de savoir gérer les espaces d'indentation puisqu'il n'y a pas de délimiteur de fin de bloc, or le lexer/parser est pour le moment appelé en ignorant complètement les espaces et sauts de ligne, donc les changements à réaliser seraient importants (peut-etre faudrait-il ecrire un preparser?), et de toutes façons xcas ne pourrait supporter qu'une partie des possibilités de python sauf grosse rééecriture (toute la programmation orientée objet par exemple).

parisse
Messages : 5740
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: XCAS et Sage

Message par parisse » ven. janv. 04, 2013 5:41 pm

Guillaume a écrit :Je m'aperçois que giac est plus performant (simple d'utilisation, rapide) que sage dans de nombreux domaines des maths lycée + L1/2 : sage a en effet fait beaucoup d'efforts pour les maths niveau recherche mais se repose un peu sur un maxima basique ailleurs. Bernard a fait au contraire d'énormes efforts pour ces maths lycée +L1/2 (sûrement ailleurs aussi mais je n'ai pas trop testé). J'essaie d'alerter la communauté sage française à ce sujet...
J'espère que vous aurez plus de succès que je n'en ai eu avec la communauté sage jusqu'à présent!
D'autant que sur certains types de calcul, giac est plus rapide que sage...

Guillaume
Messages : 112
Inscription : sam. janv. 20, 2007 8:48 pm
Contact :

Re: XCAS et Sage

Message par Guillaume » ven. janv. 04, 2013 5:48 pm

Un caspy (peut-être trop proche de casse-pipe...) serait vraiment un sacré point fort : il n'y a pas vraiment de module de calcul formel pour python et numpy et scipy sont insuffisants pour l'enseignement. Je dois dire un mot en juin du calcul informatique dans l'enseignement supérieur au congrès de la SMAI : si une piste giac pouvait être évoquée...

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: XCAS et Sage

Message par frederic han » ven. janv. 04, 2013 8:03 pm

En fait j'ai l'impression que l'on peut deja faire pas mal de choses avec le python de base et giac.
J'ai mis la 2 versions d'une libgiac construite avec cython. Une pour sage sous forme de patch (meilleure gestion des erreurs/interruptions avec sig_on/off et entiers gmp natifs) et une pour python seul:

http://www.math.jussieu.fr/~han/xcas/gi ... python.tgz

si vous avez les bonnes dependances, le fichier libgiac.so suffit, c'est donc plutot un probleme de distribuer un fichier compile avec peu de dependances. (ici je l'ai fait sur ubuntu 12.04 amd64)

sinon il faut le recreer avec cython (cf le fichier README)

mais on peut faire ce genre de truc:

Code : Tout sélectionner

from libgiac import Pygen as giac
#les fonctions giac ne sont actuellement pas exportees on peut le faire ainsi:
x,I,abs,sin=giac('x,i,abs,sin')
f=1/(2+sin(3*x)) 
f.int(x) #NB: avec giac la primitive est bien continue sur R
l=(abs(11+2*I) - abs(x+1+5*I)).solve(x)
l[0]
ll=giac(range(20))
g=[(10**i).nextprime() for i in ll ]
(g[5]*g[6]).ifactor()
M=giac(5).ranm(5)
M.pmin(x)
ce qui marche moins bien que sous sage:
Ex l'erreur de * est mal geree et fait quitter python:

Code : Tout sélectionner

l=giac([1,2])
(l.transpose())*l

parisse
Messages : 5740
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: XCAS et Sage

Message par parisse » sam. janv. 05, 2013 7:34 am

Excellent! Il faut vraiment que je me mette un peu a python... encore que ce serait plus confortable pour moi si tu finalisais le module python giac independamment de sage:-)

Alek
Messages : 111
Inscription : jeu. oct. 28, 2010 1:20 pm

Re: XCAS et Sage

Message par Alek » sam. janv. 05, 2013 11:02 am

Oui, c'est impressionnant !

Mais, si je peux me permettre, la syntaxe dont je rêve serait plutôt la suivante (style fonctionnel non object-oriented, plus direct, sans déclarations préalables) :

Code : Tout sélectionner

f(x) = 1/(2+sin(3*x)) 
integrate(f,x)  # ou integrate(f)
diff(f,x)    # ou diff(f)
solve( abs(11+2*I) - abs(x+1+5*I == 0, x )
g = [ nextprime(10^i) for i in range(20) ]
ifactor(g[5] * g[6])
En fait, tout cela est bien fourni par sage et je trouve ça excellent pour enseigner l'algorithmique et les maths (j'ai fait un petit 'test' cette année).
Le problème avec sage est que c'est une usine à gaz et cela ne marche pas très bien dans nos salles de TP. Son architecture trop compliquée (permettant par exemple de consulter des worksheets sur d'autres comptes), très lourde pour notre réseau, c'était le seul logiciel qui, malgré des efforts, faisait sauter nos serveurs une fois sur deux (sic!). Difficile donc de continuer ainsi.

Je rêve donc d'une telle syntaxe avec un moteur mathématique en une seule pièce, stable et fiable ;-)

A.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: XCAS et Sage

Message par frederic han » sam. janv. 05, 2013 12:36 pm

Il y a 2 choses differentes,

exporter les noms de fonctions est simple (cf exemple ci dessous), je ne l'ai pas mis pour eviter des confusions.

en revanche la syntaxe f(x)= me semble plus delicate vu que ca n'est pas la definition python d'une fonction.

Voici un exemple de ce qui marche:

Code : Tout sélectionner

from libgiac import Pygen as giac
x,sin,integrate,diff,solve,nextprime,ifactor,I=giac('x,sin,integrate,diff,solve,nextprime,ifactor,i')
f = 1/(2+sin(3*x)) # f(x)=  ne marchera pas
integrate(f,x)  # ou integrate(f)
diff(f,x)    # ou diff(f)
solve( abs(11+2*I) - abs(x+1+5*I), x )
solve( 'abs(11+2*I) - abs(x+1+5*I)=0', x ) # il faut mettre des ' ' a cause du =
g = [ nextprime(10**i) for i in range(20) ] #  ^ n'est pas ** en python
ifactor(g[5] * g[6])
g1=giac(range(10**6)) #assez raisonnable
g2=[giac(i) for i in range(10**6)]

import pylab

def mplot(plotdata):
    l=plotdata.op(0).op(1).op()
    x=[l.real()]
    x=eval(str(x))
    y=[l.im()]
    y=eval(str(y))
    pylab.plot(x,y)
    pylab.show()
    return

p=integrate(f).plot()
mplot(p) #c'est bien continu sur R

Alek
Messages : 111
Inscription : jeu. oct. 28, 2010 1:20 pm

Re: XCAS et Sage

Message par Alek » sam. janv. 05, 2013 3:08 pm

Mmmm, sweet !

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: XCAS et Sage

Message par frederic han » lun. janv. 07, 2013 2:09 pm

Bon j'ai mis une version pour python la:
http://www.math.jussieu.fr/~han/xcas/gi ... 0.1.tar.gz

elle devrait s'installer comme cela (j'ai change le nom de la version python):

python setup.py install

puis vous pouvez l'utiliser ainsi:

from giacpy import giac
x=giac('x')
...

il y a un repertoire avec quelques exemples.

est ce que ca marche pour vous?

D'autre part, je cherche des facons de retourner des erreurs avec giac pour tester. Je pense avoir reussi avec le
l=giac([1,2])
l.transpose()*l ne quitte plus python.

Je n'arrive pas a faire ce genre d'erreurs avec +/- du coup je n'en connais plus qui fassent quitter python.

Frederic

parisse
Messages : 5740
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: XCAS et Sage

Message par parisse » lun. janv. 07, 2013 2:29 pm

peut-on ajouter des chemins d'include et de lib pour compiler? Sur mac os, tout est installe par defaut dans /Applications et du coup il ne trouve pas les includes.

Répondre