from sympy import *
init_printing()
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x = symbols('x')
Jérome Cardan (1501-1576) a fourni, dans son ouvrage Ars Magna, une formule pour déterminer une solution réelle $\alpha$ de l'équation $X^3+pX+q=0$ dans le cas où $\frac{p^3}{27}+\frac{q^2}{4} \geqslant 0$ :
\begin{equation*} X=\sqrt[3]{-\frac{q}{2}+\sqrt{\frac{p^3}{27}+\frac{q^2}{4}}}+\sqrt[3]{-\frac{q}{2}-\sqrt{\frac{p^3}{27}+\frac{q^2}{4}}} \end{equation*}Pour tout nombre réel $a$ on appelle racine cubique de $a$ et on note $\sqrt[3]{a}$ ou $a^{\frac{1}{3}}$ l'unique réel qui élevé au cube donne $a$.
Ainsi $\sqrt[3]{8}=8^{\frac{1}{3}}=2$ et $\sqrt[3]{-8}=(-8)^{\frac{1}{3}}=-2$.
def cardan(p , q):
return (- q/2 + sqrt(p ** 3 / 27 + q ** 2 / 4)) ** (1/3) + (- q/2 - sqrt(p ** 3 / 27 + q ** 2 / 4)) ** (1/3)
#expression de f(x)
expf = x**3 - 36*x - 91
expf
factor(expf)
f = lambdify(x, expf,"numpy")
#tracé de la courbe de f
xmin, xmax, ymin, ymax = -10, 10, -600, 100
plt.axis([xmin, xmax, ymin, ymax])
t = np.linspace(xmin, xmax, 500)
y = f(t)
plt.axhline(color='blue')
plt.axvline(color='blue')
plt.grid(True)
plt.plot(t, y, linestyle='-', linewidth=2, color='red', label=r'$y=f(x)$')
plt.legend(loc='upper left')
cardan(-36, -91)
solve(f(x), x)
f(7)
Avec $p = -15$ et $q = -4$ on a $\frac{p^3}{27}+\frac{q^2}{4} = -121$ qui est négatif donc on ne peut pas calculer de solution de l'équation $x^3-15x-4=0$ avec la formule de Cardan $\sqrt[3]{-\frac{q}{2}+\sqrt{\frac{p^3}{27}+\frac{q^2}{4}}}+\sqrt[3]{-\frac{q}{2}-\sqrt{\frac{p^3}{27}+\frac{q^2}{4}}}$ et pourtant comme on va le vérifier graphiquement ci-dessous l'équation de Bombelli possède bien trois solutions réelles distinctes.
#expression de f(x)
expg = x**3 - 15*x - 4
expg
factor(expg)
g = lambdify(x, expg,"numpy")
#tracé de la courbe de g
xmin, xmax, ymin, ymax = -10, 10, -60, 100
plt.axis([xmin, xmax, ymin, ymax])
t = np.linspace(xmin, xmax, 500)
y = g(t)
plt.axhline(color='blue')
plt.axvline(color='blue')
plt.grid(True)
plt.plot(t, y, linestyle='-', linewidth=2, color='red', label=r'$y=g(x)$')
plt.legend(loc='upper left')
Quand on applique la formule de Cardan avec Python, un résultat s'affiche avec un étrange nombre i !
cardan(-15, -4)
Pourtant les solutions sont bien réelles ! Pourrait-on faire correspondre la formule de Cardan à l'un des trois réels ci-dessous ?
solve(g(x),x)
Correspondance avec la formule de Cardan grace à l'introduction d'un nombre imaginaire i=$\sqrt{-1}$
i = sqrt(-1)
(2 + i)**3
expand((2+i)**3)
(2 - i)**3
expand((2 - i)**3)
On en déduit que pour l'équation de Bombelli $x^3-15x-4=0$ avec $p = -15$ et $q = -4$ on a :
$\frac{p^3}{27}+\frac{q^2}{4} = -121$ donc avec le nombre imaginaire i tel que $\text{i}^2= -1$ on peut écrire $\frac{p^3}{27}+\frac{q^2}{4} = -121 = (11 \text{i})^2$
On en déduit que $\sqrt[3]{-\frac{q}{2}+\sqrt{\frac{p^3}{27}+\frac{q^2}{4}}}+\sqrt[3]{-\frac{q}{2}-\sqrt{\frac{p^3}{27}+\frac{q^2}{4}}}=\sqrt[3]{2 + 11 \text{i} } + \sqrt[3]{2 - 11 \text{i }}$
Or on a $(2 + \text{i})^{3} = 2 + 11 \text{i}$ et $(2 - \text{i})^{3} = 2 - 11 \text{i}$
On en déduit que $\sqrt[3]{-\frac{q}{2}+\sqrt{\frac{p^3}{27}+\frac{q^2}{4}}}+\sqrt[3]{-\frac{q}{2}-\sqrt{\frac{p^3}{27}+\frac{q^2}{4}}}=2 + \text{i} + 2 - \text{i} = 4$ et grace à l'introduction du nombre imaginaire i, la formule de Cardan donne bien la solution réelle $4$ de l'équation de Bombelli $x^3-15x-4=0$