j'ai longtemps cherché l'exercice 1.8 du livre de Ian Stewart GALOIS THEORY.
use the identity:cos(3(theta)=4(cos(theta))^3 - 3cos(theta)
to solve the cubic equation t^3 + pt +q =0 with -27q^2 - 4p^3 >0 (3 real roots)
on peut dire que cet exercice m'a pris la tete pendant un bon moment.
et je trouve la solution completement dingue !

ce qui est curieux c'est que les vecteurs tournants etaient dans mon esprit
depuis un bon bout de temps pour les solutions des racines des polynômes
du fait de la symétrie des equations (x-x_0)*(x-x_1)..(x-x_n).
figure Geogebra
est ce que ce resultat des vecteurs tournants etait deja connu ?
ci dessous le code Geogebra (partielle parque j'ai fait des modif par l'ihm):
- Code: Tout sélectionner
######################################
############verification Geogebra
# t^3 - 6*t - 4 = 0
p=Slider[-6,-5,0.1]
q=Slider[-4,-3,0.1]
f(t)=t^3 + p*t + q
R=ComplexRoot(f)
Delta=-27*q^2 -4*p^3
# uncomment if 3D view
Deltaf(q,p) = -27*q^2 -4*p^3
theta_0 = 1/3*arccos(3/2*sqrt(3)*q/sqrt(abs(p^3)))
theta_1 =( pi/3 + theta_0)
theta_2 =( 2*pi/3 + theta_0)
#
t_0=(2*sqrt(-p^3))/(sqrt(3)*p)*cos(theta_0)
t_1=-(2*sqrt(-p^3))/(sqrt(3)*p)*cos(theta_1)
t_2=(2*sqrt(-p^3))/(sqrt(3)*p)*cos(theta_2)
v_0=Vector[ (0,0), (((2*sqrt(-p^3))/(sqrt(3)*p))*cos(theta_0),((2*sqrt(-p^3))/(sqrt(3)*p))*sin(theta_0)) ]
v_1=Vector[ (0,0), (((-2*sqrt(-p^3))/(sqrt(3)*p))*cos(theta_1),((-2*sqrt(-p^3))/(sqrt(3)*p))*sin(theta_1)) ]
v_2=Vector[ (0,0), (((2*sqrt(-p^3))/(sqrt(3)*p))*cos(theta_2),((2*sqrt(-p^3))/(sqrt(3)*p))*sin(theta_2)) ]
S_0=segment[(x(v_0),0),(x(v_0),y(v_0))]
S_1=segment[(x(v_1),0),(x(v_1),y(v_1))]
S_2=segment[(x(v_2),0),(x(v_2),y(v_2))]
SetColor[ S_0, "blue" ]
SetColor[ S_1, "green" ]
SetColor[ S_2, "red" ]
le code SageMath:
- Code: Tout sélectionner
forget()
t = var('t') # define a variable t
p = var('p') # constant cubic coeff
q = var('q') # last constant cubic coeff
Delta = var('Delta') # cubic Discriminant
theta = var('theta') # variable angle theta
k = var('k') # real factor
C = var('C') #real multiplicatif factor
f = function('f')(t) # define f to be a function of t
Delta=-27*q^2 -4*p^3
show(Delta==-27*q^2 -4*p^3)
assume(Delta>0) # 3 real roots
assume(p, 'real')
assume(p<0)
assume(q, 'real')
equCubic=t^3 + p*t + q==0
show(equCubic)
trigequ=4*(cos(theta))^3 -3*cos(theta)==cos(3*theta)
show(trigequ)
equ1=equCubic.substitute(t=k*cos(theta))
equf=equ1.lhs()-q==C*trigequ.lhs()
show(equf)
equfk=equf.substitute(k=(2*sqrt(-p^3))/(sqrt(3)*p) )
equfkCi=equfk.substitute(C = -(2 *sqrt(-p^3))/(3 *sqrt(3)) )
#
equfk=equf.substitute(k = (2 *I *sqrt(p^3))/(sqrt(3)* p) )
equfkCs=equfk.substitute(C = -(2 *I* sqrt(p^3))/(3 * sqrt(3)) )
#
show(equfkCi)
show(equfkCs)
eqff = -(2 *sqrt(-p^3))/(3 *sqrt(3)) * cos(3*theta)==-q
show(eqff)
Result=solve(eqff,theta)
#
for j in range(len(Result)) :
show(Result[j])
#
theta0=Result[0]
theta1=pi/3 + theta0
theta2=pi/3 + theta1
#
sol0=(2*sqrt(-p^3))/(sqrt(3)*p)*cos(theta0)
sol1=(2*sqrt(-p^3))/(sqrt(3)*p)*cos(theta1)
sol2=(2*sqrt(-p^3))/(sqrt(3)*p)*cos(theta2)
une discussion en rapport sur le forum SageMath
En fait Emmanuel Chevalier m'a fait remarquer sur askSage (voir le lien au dessus) que la solution de cet exercice pour les 3 racines etait sur WIKI. Bon ca n'enleve rien au fait que je trouve le resultat extraordinaire.
