PCSI 2016/17 Manipuler des listes en Python
En cas de besoin, consulter le mémento Python 3, plus particulièrement Indexation des Conteneurs séquences
et Opérations sur Listes.
En utilisant idle3 ou pyzo, créer un fichier qui sera enregistré sous le nom polynomes.py dans votre réper-
toire personnel. Ce fichier sera constitué de définition de fonctions utilisées pour calculer avec des polynômes.
On décide de représenter un polynôme de degré dpar la liste de ses coefficients en degré croissant de longueur
d+1. Par exemple le polynôme P:x7→ 2x33x2+5 (de degré 3) est représenté par la liste Légale à [5,0,3,2].
Cas exceptionnel : le polynôme nul x7→ 0est représenté par la liste vide [].
De cette manière, l’ensemble des polynômes s’identifie à l’ensemble des listes numériques dont le dernier
terme est non nul. A partir de maintenant, on appelle polynôme une telle liste. A titre d’exemple, on pose
L= [5,0,3,2].
1. Définir une fonction degre() qui renvoie le degré d’un polynôme ; par exemple degre(L) renvoie la valeur
3. Contrairement à l’usage en mathématiques, on conviendra que degre([]) vaut 1.
2. Définir une fonction evalue() qui renvoie l’évaluation d’un polynôme en un nombre ; par exemple
evalue(L,4) renvoie la valeur 85, vu que 85 = 2 ×433×42+ 5.
3. Définir une fonction derive() qui renvoie la dérivée d’un polynôme ; par exemple derive(L) renvoie la
valeur [0,-6,6].
4. (multiplication d’un coefficient par un polynôme) Définir une telle fonction coef_fois_poly() à deux
paramètres, le premier un coefficient et le second un polynôme ; par exemple coef_fois_poly(3,L)
renvoie le polynôme [15,0,-9,6] ; faire attention au polynôme nul.
5. Définir une fonction enlever0() qui enlève les zéros consécutifs situés à la fin d’une liste ; par exemple si
lis vaut [8,0,2,0,0], alors après l’instruction enlever0(lis) qui ne renvoie aucune valeur, lis vaut
[8,0,2]. Remarquer qu’on utilise le fait que lis est un objet mutable.
Indication : utiliser l’instruction pop.
6. (Addition de deux polynômes) L’objectif est de définir une fonction add(), l’instruction add(P1,P2)
devant renvoyer la somme (au sens mathématique) des polynômes P1 et P2. Lorsque par exemple le degré
de P1 est inférieur ou égal à celui de P2, la somme s’obtient en ajoutant les premiers coefficients de P2
(ceux correspondant aux termes de plus bas degrés) à ceux de P1, puis en complétant la liste obtenue
avec les derniers coefficients de la liste P2 (à voir avec un exemple.) On écrira donc la fonction ainsi :
def add(P1,P2):
if degre(P1) <= degre(P2) :
S = P2[:] # copie de P2 qui deviendra P1+P2
...
... lignes de programme à compléter
...
return S
else:
return add(P2,P1)
remarquer la dernière instruction add(P2,P1) où dans sa définition la fonction add() fait appel à elle
même ; la programmation précédente est dite récursive.
7. (Multiplication de deux polynômes) Pour multiplier le polynôme P1 par le polynôme P2, on décompose
P1 comme une somme de monômes qu’on multiplie chacun par P2.
(a) Définir une fonction (de décalage) decale_poly(P,n) qui multiplie un polynôme P par x7→ xn. Par
exemple, x2(2x33x2+ 5) = 2x53x4+ 5x2, correspond au fait que decale_poly(L,2) renvoie la
valeur [0,0,5,0,3,2]
(b) Utiliser la fonction précédente pour définir une fonction multiplie(P1,P2) qui renvoie le produit
(au sens mathématique) des polynômes P1et P2.
8. En utilisant la formule du binôme : (1 + x)n=
n
X
k=0
n
kxk, écrire une fonction pascal(n) qui affiche les
n+ 1 premières lignes du triangle de Pascal.
9. (Plus difficile) Définir une fonction division(A,B) qui renvoie Q,R couple (cad 2-tuple en python) de
polynômes, où Qest le quotient et Rle reste de la division euclidienne du polynôme Apar le polynôme non
nul B, les polynomes Qet Rétant caractérisés par les deux conditions : A=QB +Ret deg(R)<deg(B).
1 / 1 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !