def discriminant(polynome): u"Calcule le discriminant d'un polynôme du second degré." a = Wild('a') b = Wild('b') c = Wild('c') x = Wild('x') dico = polynome.match(a*x**2 + b*x + c) if dico is None: raise NotImplementedError a, b, c, x = dico[a], dico[b], dico[c], dico[x] if not x.is_Symbol or a.has(x) or b.has(x) or c.has(x): raise NotImplementedError return b**2 - 4*a*c
def canonique(polynome): u"Met un polynôme du second degré sous forme canonique." a = Wild('a') b = Wild('b') c = Wild('c') x = Wild('x') dico = polynome.match(a*x**2 + b*x + c) if dico is None: return polynome a, b, c, x = dico[a], dico[b], dico[c], dico[x] if not x.is_Symbol or a.has(x) or b.has(x) or c.has(x): return polynome alpha = -b/(2*a) beta = (4*a*c - b**2)/(4*a) return a*(x - alpha)**2 + beta