giacpy Pypi windows

Nouveautes concernant Xcas.
News about Xcas

Modérateur : xcasadmin

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

giacpy Pypi windows

Message par frederic han » jeu. août 31, 2017 12:30 pm

J'ai mis des distributions binaires de giacpy pour windows sur Pypi https://pypi.python.org/pypi
(Elles sont compilées avec gmp,mpfr,gsl,ntl,pari)

Donc sous windows si vous avez python 2.7, 3.4,3.5,3.6 en 32 ou 64 bits, il devrait suffire de faire dans un terminal:

Code : Tout sélectionner

python.exe -mpip install giacpy
(si vous n'avez pas le module wheel il faut faire avant:

Code : Tout sélectionner

python.exe -mpip install wheel

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

Re: giacpy Pypi windows

Message par parisse » ven. sept. 01, 2017 6:23 pm

Je n'ai pas reussi avec python 2.7.5 sous windows7 64 bits:
Could not find any download that satisfy the requirement giacpy

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

Re: giacpy Pypi windows

Message par frederic han » ven. sept. 01, 2017 9:55 pm

Sous Win7 avec python3.4 j'ai eu un message similaire, avec aussi un message qu'il existait pip 9 et que j'avais la version 6. J'ai mis à jour pip et j'ai ensuite pu installer giacpy.

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

Re: giacpy Pypi windows

Message par parisse » sam. sept. 02, 2017 9:09 am

Donc pour les non-inities (comme moi), il faut faire:

Code : Tout sélectionner

python.exe -mpip install --upgrade pip
python.exe -mpip install wheel
python.exe -mpip install giacpy
Ensuite, pour tester si ca marche

Code : Tout sélectionner

python.exe
from giacpy import *
x=giac('x')
factor(x**4-1)
Ca rend l'installation super-simple a expliquer, je modifie sur le site de Xcas.
Merci!

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

Re: giacpy Pypi windows

Message par frederic han » mer. sept. 20, 2017 9:16 pm

J'ai mis à jour giacpy en version 0.6.1 sur Pypi.
Binaires windows + source pour les linuxiens qui ont la librairie giac et tout pour compiler.

Principale nouveauté: on peut affecter des vecteurs, matrices, listes... C'est une affectation sur place, probablement un peu plus lente que dans giac/xcas mais plus rapide que subsop.
NB: Pour les grandes matrices j'ai l'impression que A[0][0]=2 est plus rapide que A[0,0]=2.

j'ai ajouté aussi une partie Linear Algebra dans la doc de la fonction giac:

Code : Tout sélectionner

...
     Linear Algebra:
      ---------------
    
      * In Giac/Xcas vectors are just lists and matrices are lists of list.
    
       >>> x,y=giac('x,y')
       >>> A=giac([[1,2],[3,4]])  # we create a giac matrix from it lines
       >>> v=giac([x,y]); v   # a giac vector
       [x,y]
       >>> A*v # matrix product with a vector outputs a vector
       [x+2*y,3*x+4*y]
       >>> v*v  # dot product
       x*x+y*y
    
       Remark that w=giac([[x],[y]]) is a matrix of 1 column and 2 rows. It is not a vector    so w*w doesn't make sense.
       >>> w=giac([[x],[y]])
       >>> w.transpose()*w   # this matrix product makes sense and output a 1x1 matrix.
       matrix[[x*x+y*y]]
    
      * In Python affectation doesn't create a new matrix. (cf. pointers) see also  the doc of  'giacpy.Pygen.__setitem__'
    
       >>> B1=A;
       >>> B1[0,0]=43; B1 # in place affectation changes both B1 and A
       [[43,2],[3,4]]
       >>> A
       [[43,2],[3,4]]
       >>> A[0][0]=A[0][0]+1; A  # similar as A[0,0]=A[0,0]+1
       [[44,2],[3,4]]
       >>> A.pcar(x)  # compute the characteristic polynomial of A
       x**2-48*x+170
       >>> B2=A.copy() # use copy to create another object
       >>> B2[0,0]=55; B2  # here A is not modified
       [[55,2],[3,4]]
       >>> A
       [[44,2],[3,4]]
    
    
    
      * Sparse Matrices are avaible via the table function.
       >>> import giacpy
       >>> A=giacpy.table(()); A  # create an empty giac table
       table(
       )
       >>> A[2,3]=33; A[0,2]='2/7' # set non zero entries of the sparse matrix
       >>> A*A  # basic matrix operation are supported with sparse matrices
       table(
       (0,3) = 66/7
       )
       >>> D=giacpy.diag([22,3,'1/7']); D  # some diagonal matrix
       [[22,0,0],[0,3,0],[0,0,1/7]]
       >>> giacpy.table(D)    # to create a sparse matrix from an ordinary one
       table(
       (0,0) = 22,
       (1,1) = 3,
       (2,2) = 1/7
       )
    
    
        But many matrix functions apply only with ordinary matrices so need conversions
    
       >>> B1=A.matrix(); B1 # convert the sparse matrix to a matrix, but the size is minimal
       [[0,0,2/7,0],[0,0,0,0],[0,0,0,33]]
       >>> B2=B1.redim(4,4); B2.pmin(x)  # so we may need to resize B1
       x**3
...

Répondre