Maple : produit non commutatif
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Maple : produit non commutatif



  1. #1
    g_h

    Maple : produit non commutatif


    ------

    Bonsoir,

    Je cherche en vain depuis quelques heures un produit non commutatif sous Maple... (je travaille seulement sur des indéterminées)

    - le '.' n'est associatif que d'un seul côté, et encore moins distributif sur l'addition, ce n'est pas pratique du tout
    - j'ai vu qu'il existait un '&*' mais je ne peux pas faire par exemple :
    convert(a &* b &* c, list), car pour Maple, a &* b &* c, c'est en fait :
    &*(a, &*(b, c)), donc il faudrait faire une boucle pour transformer un produit en liste, ce qui est loin d'être pratique vu toutes les manipulations que je dois faire... !

    Il me faudrait juste un * en enlevant la commutativité, ça serait parfait... !

    Si vous avez une idée...

    merci !

    -----

  2. #2
    g_h

    Re : Maple : produit non commutatif

    Ouille, sur internet, on dirait que je ne suis pas le seul à rechercher quelque chose dans ce genre... c'est bizarre que quelque chose d'aussi basique ne soit pas implémenté dans Maple :/

    Et, de plus, &* n'est associatif que d'un côté aussi, histoire d'ajouter à la liste des inconvénients...

  3. #3
    invitebe0cd90e

    Re : Maple : produit non commutatif

    J'avais cherché aussi fut un temps, rien trouvé sous Maple.

    Par contre le logiciel de calcul formel (libre et gratuit) maxima, integre un vrai produit associatif et non commutatif. Je crois qu'il y avait juste un peu de cafouillage quand il regroupait les termes apres expansion d'un produit de polynomes, mais ca se reglait a peu pres je ne sais plus trop comment....

    SInon tu as le logiciel GAP (libre et gratuit) specialisé en algebre. Lui c'est plutot l'inverse, il maitrise tres bien tout ce qui est structure algebrique compliquée, en particulier tu peux definir des algebres libres (donc non commutatives), des anneaux de polynomes, etc.. mais a ma connaissance il ne possede pas les outils de simplification des logiciels de calcul formel (il est plutot adapté pour l'aspect combinatoire, etc..)

    Enfin, derniere possibilité interressante : le logiciel Yacas (toujours libre et gratuit) qui permet de definir soi meme assez simplement une loi de composition qui obeit aux regles qu'on veut, ca demande un chouia plus de travail en amont mais ca offre plus de possibilités, genre pouvoir dire que tel symbole designe un scalaire et donc commute avec tout le monde, etc...

  4. #4
    g_h

    Re : Maple : produit non commutatif

    Salut, et merci pour ta réponse... le problème, c'est que j'en ai besoin pour un travail à rendre, je ne peux pas choisir quel logiciel j'utilise !

    (et de plus, c'est dans le cadre d'un problème beaucoup plus vaste, et j'ai déjà écrit énormément de code, j'avoue que je n'ai pas très envie de changer maintenant que je suis presque arrivé au bout... !)

    Si je trouve une solution, je viendrai la poster ici

    Merci !

  5. A voir en vidéo sur Futura
  6. #5
    invitebe0cd90e

    Re : Maple : produit non commutatif

    Arrg, pas de bol... Pour etre honnete j'ai beaucoup de mal avec maple.. M'enfin si tu n'as pas le choix.... Bon courage !

    Sans etre indiscret dans quel contexte as tu besoin d'un produit non commutatif ? Il y a peut etre un moyen de contourner le probleme...

  7. #6
    invitebe0cd90e

    Re : Maple : produit non commutatif

    Ah, et j'ai aussi oublié de te parler du logiciel singular/plural qui pour le coup est specialisé dans la manipulation de polynomes en des variables non commutatives (a la base essentiellement pour trouver des bases de Gröbner, mais il peut servir a des calculs simples) et il est possible de l'appeller de l'exterieur, donc peut etre que ton code maple peut deleguer les calculs a ce logiciel...

    Sinon il semble qu'il y ait moyen de redefinir les propriétés de &* (ce qui me semble etre la moindre des choses) dans Maple, je suis tombé sur ca : http://www.math.rwth-aachen.de/MapleAnswers/24.html

    Je l'ai lu en diagonal, donc je ne sais pas si ca repond au probleme, mais ca en a l'air.

  8. #7
    g_h

    Re : Maple : produit non commutatif

    J'avais déjà vu cette page, mais en fait je te remercie, ça m'a permis de voir la solution !

    En bref :

    1ère étape (qui n'est pas dans cette page) : on définit un produit associatif et distributif sur +, avec pour neutre 1 :
    Code:
    define('`&*`', flat, identity=1, multilinear);
    Ceci est déjà presque suffisant, mais Maple galère juste un peu avec des expressions avec plus de 2 opérandes, exemple :
    Code:
    a &* b &* 1;
    n'est pas simplifié en
    Code:
    a &* b;
    alors que
    Code:
    a &* 1
    est simplifié en
    Code:
    a
    .

    Solution, et même beaucoup plus, car on hérite alors d'un expand complètement fonctionnel :
    Code:
    `expand/&*`:= proc()
       if nargs = 1 then
          RETURN(expand(args[1]));
       elif nargs > 2 then
          RETURN(expand(args[1]) &* `expand/&*`(args[2..nargs]));
       else
          RETURN(expand(args[1]) &* expand(args[2]));
       fi;
    end;
    Et pour le côté "pratique", pour manipuler des expressions :

    Code:
    `type/&*`:= proc(x);
       if type(x,`function`) and op(0,x) = `&*` then
          RETURN(true);
       else
         RETURN(false);
       fi;
    end:
    Si je veux utiliser ça, c'est en fait pour implémenter l'algorithme de redressement, sachant que je veux utiliser et afficher des polynômes qui ne sont pas dans une algèbre commutative (les monômes sont de la forme X indexé par une suite croissante), dans laquelle p1.p2 a du sens, mais vis-à-vis de mon problème p2.p1 n'a pas de sens (et mon programme est même prévu pour qu'un tel polynôme déclenche une erreur)

    Merci encore !

  9. #8
    phryte

    Re : Maple : produit non commutatif

    Bonjour.
    Essaie : define(`&*`, associative, identity=1);

  10. #9
    g_h

    Re : Maple : produit non commutatif

    Citation Envoyé par phryte Voir le message
    Bonjour.
    Essaie : define(`&*`, associative, identity=1);
    Bonjour, et merci, mais, tu aurais du lire mon dernier message
    Ton produit ainsi défini n'est pas distributif sur +, il faut ajouter le paramètre multilinear.
    et, le flat dans mon define veut dire "associatif".

    Le problème était de forcer Maple a simplifier les expression comme il le fait pour les autres opérateurs, mais j'y suis arrivé modulo un appel à expand que j'ai du spécialiser pour ce nouvel opérateur (cf. mon dernier message encore une fois!)

  11. #10
    phryte

    Re : Maple : produit non commutatif

    Pourtant :
    a &* b &* 1;
    donne bien :

    a &* b

  12. #11
    g_h

    Re : Maple : produit non commutatif

    Citation Envoyé par phryte Voir le message
    Pourtant :
    a &* b &* 1;
    donne bien :

    a &* b
    Je viens de re tester, pas chez moi... ! ( cf. pièce jointe !)
    (Je tourne sous Maple 12)
    Images attachées Images attachées  

  13. #12
    phryte

    Re : Maple : produit non commutatif

    Je tourne sous Maple 12
    J'ai Maple V release 4[IMG] [/IMG]

  14. #13
    g_h

    Re : Maple : produit non commutatif

    Je penche pour la différence de version alors... dommage :/
    Merci pour l'information dans tous les cas !

Discussions similaires

  1. Groupe commutatif & corps commutatif.
    Par Galerians dans le forum Mathématiques du supérieur
    Réponses: 9
    Dernier message: 22/12/2007, 23h58
  2. [Maple]Entiers sur maple
    Par FonKy- dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 09/08/2007, 17h55
  3. promenade dans anneau non-commutatif
    Par rajamia dans le forum Mathématiques du supérieur
    Réponses: 11
    Dernier message: 31/07/2007, 13h00
  4. 2ème loi d'un anneau non commutatif
    Par rajamia dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 29/07/2007, 16h45
  5. corps commutatif
    Par invite613a4e44 dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 24/11/2005, 12h51