Problème sage ?

Hello,
J'ai un petit problème avec sage, est-ce que quelqu'un peut tester les commandes suivantes et me donner le résultat, chez moi la commande finale ne termine pas et je ne comprends pas ! Merci d'avance !
class Theta:
    def __init__(self,K):
        assert K.dimension() == 5
        self.Theta_K  = self.morphisme
        self.algebra  =  K
    def morphisme(self,N):
        K  = self.algebra
        B  = K.basis()
        Nx = sum([N[0,j]*B[j] for j in range(5)])
        Ny = sum([N[1,j]*B[j] for j in range(5)])
        Nz = sum([N[2,j]*B[j] for j in range(5)])
        return matrix(6,5,[vector(u) for u in [Nx^2,Ny^2,Nz^2,Nx*Ny,Nx*Nz,Ny*Nz]])
k.<x1,x2,x3,x4,x5, y1,y2,y3,y4,y5, z1,z2,z3,z4,z5> = QQ[]
k = k.fraction_field()
N = matrix(k,3,5,[[x1,x2,x3,x4,x5], [y1,y2,y3,y4,y5], [z1,z2,z3,z4,z5]])
kT.<T> = k[]
P = T^5
CP = companion_matrix(P)
K = FiniteDimensionalAlgebra(k,[(CP.transpose())^j for j in range(0,5)] )
phi = Theta(K).morphisme
M = phi(N)
time v =  M.minors(5)

Réponses

  • sage: phi = Theta(K).morphisme
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-11-6c0f7bcbca94> in <module>()
    ----> 1 phi = Theta(K).morphisme
    
    <ipython-input-1-4fd6c0d0d9d4> in __init__(self, K)
          1 class Theta:
          2     def __init__(self,K):
    ----> 3         assert K.dimension() == Integer(5)
          4         self.Theta_K  = self.morphisme
          5         self.algebra  =  K
    
    sage/structure/category_object.pyx in sage.structure.category_object.CategoryObject.__getattr__ (/usr/lib/sagemath//src/build/cythonized/sage/structure/category_object.c:7940)()
    
    sage/structure/category_object.pyx in sage.structure.category_object.CategoryObject.getattr_from_category (/usr/lib/sagemath//src/build/cythonized/sage/structure/category_object.c:8104)()
    
    sage/structure/misc.pyx in sage.structure.misc.getattr_from_other_class (/usr/lib/sagemath//src/build/cythonized/sage/structure/misc.c:1861)()
    
    AttributeError: 'FiniteDimensionalAlgebra_with_category' object has no attribute 'dimension'
    
    De fait, quand je tape "K.<Tab>", ça passe directement de K.degree à K.dump.
  • Apparemment, on peut remplacer "assert K.dimension()==5" par "assert len(K.basis())==5" sans dommage.

    L'erreur suivante est due au fait que "vector(u)" n'a pas de sens pour u dans K :
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-23-b3f71f5ecfea> in <module>()
    ----> 1 M = phi(N)
    
    <ipython-input-21-64ea7d8bbd0b> in morphisme(self, N)
         11         Nz = sum([N[Integer(2),j]*B[j] for j in range(Integer(5))])
         12         print Nx
    ---> 13         return matrix(Integer(6),Integer(5),[vector(u) for u in [Nx**Integer(2),Ny**Integer(2),Nz**Integer(2),Nx*Ny,Nx*Nz,Ny*Nz]])
         14 
    
    sage/modules/free_module_element.pyx in sage.modules.free_module_element.vector (/usr/lib/sagemath//src/build/cythonized/sage/modules/free_module_element.c:5896)()
    
    sage/modules/free_module_element.pyx in sage.modules.free_module_element.prepare (/usr/lib/sagemath//src/build/cythonized/sage/modules/free_module_element.c:6474)()
    
    /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/structure/sequence.py in Sequence(x, universe, check, immutable, cr, cr_str, use_sage_types)
        239     if universe is None:
        240         orig_x = x
    --> 241         x = list(x) # make a copy even if x is a list, we're going to change it
        242 
        243         if len(x) == 0:
    
    TypeError: 'FiniteDimensionalAlgebraElement' object is not iterable
    
  • Salut Math coss,

    Tu as quelle version de sage ? Chez moi le problème est dans la dernière commande, impossible de calculer les minors (on a trouvé une combine qui consiste à travailler sur l'anneau de polynôme plutôt que sur son corps de fraction).
  • Ah oui, ma version date un peu : version 7.5.1 du 15 janvier 2017. Bon, j'essaie d'installer une version plus récente.
  • OK, avec Sage 8.8, tout passe jusqu'à la dernière commande mais le calcul d'un seul des mineurs prend déjà trop de temps. Après transformation de M en une matrice à coefficients polynomiaux par un change_ring... ça ne change rien (pas la patience) ça change tout !

    In:
    class Theta:
        def __init__(self,K):
            assert K.dimension() == 5
            self.Theta_K  = self.morphisme
            self.algebra  =  K
        def morphisme(self,N):
            K  = self.algebra
            B  = K.basis()
            Nx = sum([N[0,j]*B[j] for j in range(5)])
            Ny = sum([N[1,j]*B[j] for j in range(5)])
            Nz = sum([N[2,j]*B[j] for j in range(5)])
            return matrix(6,5,[vector(u) for u in [Nx^2,Ny^2,Nz^2,Nx*Ny,Nx*Nz,Ny*Nz]])
    
    k.<x1,x2,x3,x4,x5, y1,y2,y3,y4,y5, z1,z2,z3,z4,z5> = QQ[]
    kf = k.fraction_field()
    N = matrix(kf,3,5,[[x1,x2,x3,x4,x5], [y1,y2,y3,y4,y5], [z1,z2,z3,z4,z5]])
    kT.<T> = kf[]
    P = T^5
    CP = companion_matrix(P)
    K = FiniteDimensionalAlgebra(kf,[(CP.transpose())^j for j in range(0,5)] )
    phi = Theta(K).morphisme
    M = phi(N)
    
    time v = M.change_ring(k).minors(5)
    
    Out:
    CPU times: user 39.3 ms, sys: 0 ns, total: 39.3 ms
    Wall time: 36.2 ms
    
  • Merci pour la confirmation. C'est assez louche tout de même !
Connectez-vous ou Inscrivez-vous pour répondre.