Bonjour,
Je suis étudiante en prépa maths et je voudrais faire un algorithme pour décomposer un polynôme (explication vite fait : j'ai un polynôme avec n variables, par exemple 3*X1X2 + 2X1^2 + X1*X2*X3 ; j'ai créé un typage en Caml, à l'aide de vecteurs : mon polynôme va être représenté par un vecteur où je mets les coefficients devant les monômes, et un deuxième vecteur qui contient des vecteurs, qui seront les degrés des différentes variables de mon polynôme. Ici, le polynôme sera représenté par P={coefs=[|3;2;1|];degréspol=[|[|1;1;0|];[|2;0;0|];[|1;1;1|]|]})
Avec des maths on montre qu'un polynôme symétrique (si on change les indices des variables, cad X1 en X2, X3 en X1 etc., le polynôme reste le même) peut se décomposer en polynômes symétriques élémentaires (qui n'ont pas une expression simple).
Mon but est donc de décomposer un polynôme symétrique en les polynômes symétriques élémentaires.
A un moment dans mon programme je définis des entiers r1, r2 et r3, correspondant à des entiers dans un vecteur, et a un autre entier. J'aimerais afficher la chaîne de caractère "a*S1^(r1-r2)*S2^(r2-r3)*S3^(r3)" mais où a, r1, r2 et r3 vont être remplacés par les bonnes valeurs, par exemple si r1=r2=r3=1 et a=2 je voudrais afficher "2*S1^(1-1)*S2^(1-1)*S3^(1)", et je ne trouve pas comment faire !
Pourriez-vous m'aider s'il vous plaît ?
Ci-joint les algorithmes que j'ai fait, ça sera plus simple. La fonction qui m'intéresse est la dernière, "decompose".
Merci beaucoup pour votre aide, bonne journée !
(je me suis contentée de 3 variables pour l'instant, X1, X2 et X3, et mes polynômes symétriques élémentaires sont :
S1 = X1 + X2 + X3
S2 = X1*X2 + X2*X3 + X1*X3
S3 = X1*X2*X3)
Partager