Page 1 sur 2
XCAS et Sage
Publié : jeu. janv. 03, 2013 4:49 pm
par Guillaume
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 :
Cette entrée dans Sage devrait ouvrir des portes internationales à giac...
Re: XCAS et Sage
Publié : ven. janv. 04, 2013 7:55 am
par parisse
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.
Re: XCAS et Sage
Publié : ven. janv. 04, 2013 1:05 pm
par Guillaume
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.
Re: XCAS et Sage
Publié : ven. janv. 04, 2013 3:24 pm
par Alek
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.
Re: XCAS et Sage
Publié : ven. janv. 04, 2013 5:06 pm
par Guillaume
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...
Re: XCAS et Sage
Publié : ven. janv. 04, 2013 5:39 pm
par parisse
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).
Re: XCAS et Sage
Publié : ven. janv. 04, 2013 5:41 pm
par parisse
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...
Re: XCAS et Sage
Publié : ven. janv. 04, 2013 5:48 pm
par Guillaume
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...
Re: XCAS et Sage
Publié : ven. janv. 04, 2013 8:03 pm
par frederic han
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:
Re: XCAS et Sage
Publié : sam. janv. 05, 2013 7:34 am
par parisse
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:-)
Re: XCAS et Sage
Publié : sam. janv. 05, 2013 11:02 am
par Alek
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.
Re: XCAS et Sage
Publié : sam. janv. 05, 2013 12:36 pm
par frederic han
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
Re: XCAS et Sage
Publié : sam. janv. 05, 2013 3:08 pm
par Alek
Mmmm, sweet !
Re: XCAS et Sage
Publié : lun. janv. 07, 2013 2:09 pm
par frederic han
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
Re: XCAS et Sage
Publié : lun. janv. 07, 2013 2:29 pm
par parisse
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.