Bonjour
Je dois réaliser la multiplication de deux pôlynômes dits "pleins", que l'on représente sous un tableau :
[|1;2;3|] représente 1+2X+3X²
Le professeur nous a déjà fourni la fonction réalisant le calcul de la somme des polynomes.
Pour ceci j'ai pensé à réaliser d'abord le calcul du produit d'un mônome par le pôlynome, fonction que j'ai déja trouvé :
par exemple : mult_m_p [|0;0;2|] [|1;2|] renvoie bien [| 0;0;2;4|] , c'est-a-dire (2X²)*(1+2X) = 2X²+4X^3 , ceci est donc bien cohérent.
Ensuite il m'a semblé nécessaire de créeer une fonction qui renvoie le monome de position k du polynome de longueur n
exemple : def_monome 3 [|1;2;3;4;5;6|] renvoie [|0;0;0;4|]
Jusque-là tout ce que jai fait me semble correct, mais je sèche sur le moyen d'assembler le tout pour rendre le produit de deux polynomes
L'idée est d'effectuer le produit de chaque monome du polynome p1 par p2 (je sais bien définir le monome d'un polynome p1 et calculer son produit avec p2 grace aux deux fonctions précédentes) puis d'effectuer la somme de tous ces produits à l'aide de add_pol_plein , la fonction dont ont dispose déjà, mais qui ne prend que 2 arguments.
Si p1 a 4 cases
il faudra que je fasse
S'il a un nombre impair de case cela differera légerement j'en suis conscient, mais mon probleme est de trouver comment décrir ceci en impératif, pour pouvoir calculer quelque soit p1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 let mult_pol_plein p1 p2 = add_pol_plein ( ( add_pol_plein ( mult_m_p ( def_monome 0 p1) p2) ( mult_m_p ( def_monome 1 p1) p2) ) ( add_pol_plein ( mult_m_p ( def_monome 2 p1) p2) ( mult_m_p ( def_monome 3 p1) p2) )
J'espere que ce n'est pas trop confus, et que quelqu'un pourra m'aider car je m'y arrache les cheveux !
Merci d'avance
Partager