Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
1631 connectés 

  FORUM HardWare.fr
  Programmation
  Langages fonctionnels

  [Lisp] Multiplication & représentation sparse de polynôme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Lisp] Multiplication & représentation sparse de polynôme

n°2115649
Pc_eXPert
:o :o ça laggue
Posté le 08-12-2011 à 22:34:29  profilanswer
 

Bien le bonsoir,
 
Je suis au devant d'un problème qui a été abordé en détail dans la théorie, dont la plupart du temps les conclusions étaient "chaque méthode a ses avantages". Afin d'écrire un petit programme (ou script, whatever) de manipulation de polynômes, j'ai adopté la représentation sparse. Ainsi, pour le polynôme x^2+4x -3y, j'ai la représentation suivante :
((x (2 1) (1 4)) (y (1 -3)))
Il est admis que chaque groupe de sous-liste représente une addition. Cependant, le problème est le suivant : comment représenter la multiplication, notamment entre différentes variables ?
J'ai cherché sur le net bien évidemment, et il en ressort de grandes réflexions théoriques, puis on glisse rapidement vers le benchmark de telle représentation par rapport à une autre, mais rien n'indique une méthode souple et efficace pour représenter la multiplication de variables différentes en sparse ; à moins que j'aie mal cherché :)
 
J'ai donc choisi de représenter x^2 * 4y^3 de la façon suivante :
((x (2 1) (3 4y)), où y est en fait une composante de x. Le problème c'est que cela brise les fonctions manipulant les entiers et les symboles différemment, et cela obscurcit la représentation d'origine choisie.
 
Des idées ?
 
D'avance merci !
 
PS : c'est pas entièrement un problème dû à Lisp puisqu'en fait c'est d'ordre plus général, mais vu que je savais pas trop où mettre ce sujet et que mon implémentation est en Lisp, j'ai choisi la catégorie de prog. fonctionnelle.


Message édité par Pc_eXPert le 13-12-2011 à 19:02:55
mood
Publicité
Posté le 08-12-2011 à 22:34:29  profilanswer
 

n°2116362
Pc_eXPert
:o :o ça laggue
Posté le 12-12-2011 à 22:20:02  profilanswer
 

Up
 
J'ai essayé d'appliquer cette représentation ((x (2 1) (3 4y)), mais il apparaît assez difficile de gérer un symbole tel 4y sans encombre. A vrai dire, il paraît ardu de séparer la partie entière de la partie inconnue.
J'ai donc songé à une autre représentation du polynôme x^2 * 4y^3 :
(("x*y" (2 3 4)))
Donc en gros, je crée une sous-liste chaque fois que je rencontre une nouvelle inconnue et qu'elle est multipliée. Les problèmes s'ensuivent également : la taille de la sous-liste contenant les exposants et le coefficient est constamment variable, ce qui rend son traitement plus difficile ; et également cela brise la représentation de départ. Cela ressemble davantage à une sorte de mix entre la représentation sparse et dense.
 
Toujours pas de meilleure idée ?


Message édité par Pc_eXPert le 13-12-2011 à 19:03:15

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Langages fonctionnels

  [Lisp] Multiplication & représentation sparse de polynôme

 

Sujets relatifs
Limiter la porté d'une variable en emacs lispPolynôme
representation d'un objet c++ en asmRésoudre polynome de degré 2
[résolu] boost::ublas::vector_sparseReprésentation de données et alogorithme de filtre de questionnaires
Choix de container pour représentation sparse[Résolu] [VBA] Multiplication fausse
Représentation en mémoire d'une classe, assembleur 
Plus de sujets relatifs à : [Lisp] Multiplication & représentation sparse de polynôme


Hit-Parade
Copyright © 1997-2012 Hardware.fr SARL / Groupe LDLC / LesNumeriques.com / Version anglaise du site: BeHardware