Un exo fou !

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 554
Enregistré le: 13 Mai 2009, 10:28

un exo fou !

par ortollj » 04 Juil 2017, 20:24

Bonjour
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. :ghee:
Modifié en dernier par ortollj le 18 Juil 2017, 07:50, modifié 1 fois.
si j'avais su j'aurais pas venu.



Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 554
Enregistré le: 13 Mai 2009, 10:28

Re: un exo fou !

par ortollj » 08 Juil 2017, 21:51

Edited 2017/07/14
code SageMath complété pour afficher les 3 vecteurs.
(peut servir pour débuter avec SageMath, mais sans doute que le code n'est pas optimal !)

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') # lhs real factor
C = var('C') # rhs real factor
t_0=var('t_0')
t_1=var('t_1')
t_2=var('t_2')
equDelta=Delta==-27*q^2 -4*p^3
show(equDelta)
#Delta=-27*q^2 -4*p^3)
assume(Delta>0) # 3 real roots
assume(p, 'real')
assume(p<0)
assume(q, 'real')
assume(C, 'real')
assume(k, '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)
######## calcul k and C
equC=-3*C==k*p
equD=k^3==4*C
ResultC=solve(equD,C)
for j in range(len(ResultC)) :
    show(ResultC[j])
Rk=solve(equC.substitute(ResultC[j].lhs()==ResultC[j].rhs()),k)
del(Rk[len(Rk)-1])
show(Rk)
RC0=solve(equD.substitute(Rk[0].lhs()==Rk[0].rhs()),C)
#show(RC0)
RC=[RC0[0],solve(equD.substitute(Rk[1].lhs()==Rk[1].rhs()),C)[0]]
show(RC)
######## end calcul k and C
equfk0=equf.substitute(Rk[0].lhs()==Rk[0].rhs() )
equfk1=equf.substitute(Rk[1].lhs()==Rk[1].rhs() )
equfC0=equfk0.substitute(RC[0].lhs()==RC[0].rhs() )
equfC1=equfk0.substitute(RC[1].lhs()==RC[1].rhs() )
equfC2=equfk1.substitute(RC[0].lhs()==RC[0].rhs() )
equfC3=equfk1.substitute(RC[1].lhs()==RC[1].rhs() )
#
#show(equfk0)
#show(equfk1)
#show(equfC0)
#show(equfC1)
show(equfC2)
show(equfC3)
equff0 = RC[0].rhs()* cos(3*theta)==-q
equff1 = RC[1].rhs()* cos(3*theta)==-q
show(equff0)
show(equff1)
thetas=solve(eqff0,theta)
thetass=[thetas[0],solve(eqff1,theta)[0] ]
show(thetass)
theta_0 = thetass[0].rhs()
theta_1 =( 2*pi/3 + thetass[0].rhs())
theta_2 =( 4*pi/3 + thetass[0].rhs())
tx_0=(Rk[0].rhs()*cos(theta_0)) # root 1
ty_0=(Rk[0].rhs()*sin(theta_0))
tx_1=(Rk[0].rhs()*cos(theta_1)) # root 2
ty_1=(Rk[0].rhs()*sin(theta_1))
tx_2=(Rk[0].rhs()*cos(theta_2)) # root 3
ty_2=(Rk[0].rhs()*sin(theta_2))
###########roots
equt_0=t_0==(Rk[0].rhs()*cos(theta_0)) # root 0
equt_1=t_1==(Rk[0].rhs()*cos(theta_1)) # root 1
equt_2=t_2==(Rk[0].rhs()*cos(theta_2)) # root 3
show(equt_0) ; show(equt_1) ;show(equt_2)
############  application : show vectors with p=-15 and q=-4
tax_0=(Rk[0].rhs()*cos(theta_0)).substitute(p=-15).substitute(q=-4)
tay_0=(Rk[0].rhs()*sin(theta_0)).substitute(p=-15).substitute(q=-4)
tax_1=(Rk[0].rhs()*cos(theta_1)).substitute(p=-15).substitute(q=-4)
tay_1=(Rk[0].rhs()*sin(theta_1)).substitute(p=-15).substitute(q=-4)
tax_2=(Rk[0].rhs()*cos(theta_2)).substitute(p=-15).substitute(q=-4)
tay_2=(Rk[0].rhs()*sin(theta_2)).substitute(p=-15).substitute(q=-4)
va_0 = vector([tax_0, tay_0])
va_1 = vector([tax_1, tay_1])
va_2 = vector([tax_2, tay_2])
plot(va_0, color='black') + plot(va_1, color='brown') + plot(va_2, color='red')
si j'avais su j'aurais pas venu.

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite