Bonjour

J'essaie de comprendre python et de travailler les bibliothèques de calcul. Là, mon but est d'afficher une décomposition en éléments simples d'un polynôme. Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import sympy as sp
x=sp.Symbol('x')
 
p=64*x**6-1
list=sp.factor_list(p)
#list=sp.factor_list(sp.Poly(p)) # ne marche pas parce que les multiplications développent automatiquement
p=1
for i in range(len(list[1])) :
    if list[1][i][1]==1 :
        p=p*(list[1][i][0])
    else :
        p=p*(list[1][i][0])**list[1][i][1]
p=list[0]*p # Le coefficient du monome de plus haut degré
display(p)
 
for i in range(len(list[1])) :
    sol=sp.solve(list[1][i][0],x)
    if len(sol)==1 :
        print(sol[0]," d'ordre ",list[1][i][1])
    else :
        print(list[1][i][0]," sans racine réelle d'ordre ",list[1][i][1])
 
# Pour les racines complexes
p=64*x**6-1
list=sp.factor_list(p,extension=sp.roots(p))
display(list)
p=1 # Le coefficient du monome de plus haut degré
for i in range(len(list[1])) :
    if list[1][i][1]==1 :
        p=p*(list[1][i][0])
    else :
        p=p*(list[1][i][0])**list[1][i][1]
    display(list[1][i]," => ",p) # affichage pour bien vérifier l'ordre d'arrivée
p=list[0]*p        
display(p)
 
print ("liste des racines :")
for i in range(len(list[1])) :
    print(list[1][i][0]," => ",x-list[1][i][0]," d'ordre ",list[1][i][1])
J'ai deux problèmes au niveau des racines complexes :
1) J'ai fait afficher une à une les opérations effectuées pour générer le polynôme décomposer. Le polynôme n'est pas restitué dans le bon sens.
2) Le coefficient du monôme du plus haut degré, je dois l'introduire à la fin, sinon, il est rentré en facteur dans le premier terme utilisé. C'est à dire que je dois initialiser p par p=1 et conclure par p=list[0]*p. Si je ne fais qu'initialiser par p=list[0], ça ne marche pas.

édit : Une autre question : comment ne récupérer que le 𝑥3−1, de Poly(𝑥3−1,𝑥,𝑑𝑜𝑚𝑎i𝑛=ℤ) ?