Mon problème est le suivant:
Soit 0<x<1,0<y<1,a>0
Trouver avec Xcas la valeur exacte de a (ou de a^2 si c'est plus simple) sachant que:
(x-6)^2+(y-5)^2=49,x(x-6)=y(y-5),a^2=x^2+y^2
NB: j'aimerais rester au niveau d'une classe de TermS et ne pas les perdre dans les méandres de Ferrari/Cardan.
1/ point de vue graphique:
cercle((x-6)^2+(y-5)^2=49);
implicitplot(x(x-6)-y(y-5));
2/ méthode approchée:
supposons(x>0 and x<1);
supposons(y>0 and y<1);
supposons(a>0);
solve([(x-6)^2+(y-5)^2-49,x(x-6)-y(y-5),a^2-x^2-y^2],[x,y,a])
me renvoie les approximations de x,y,a.
Le warning fait référence à deux polynômes.
Le second semble être le polynôme ayant a pour racine.
A quoi correspond le premier ?
Pouquoi les polynômes ayant x et y pour racines n'apparaissent-ils pas ?
3/ J'obtiens ces deux polynômes en faisant:
resultant((x-6)^2+(y-5)^2-49,x(x-6)-y(y-5),y)
resultant((x-6)^2+(y-5)^2-49,x(x-6)-y(y-5),x)
D'où ma question:
Comment obtenir le polynôme ayant a pour racine ?
Avec ce polynôme on peut trouver a car le delta de Ferrari de degré 3 a une racine entière.
On peut peut-être obtenir a par une méthode plus directe ?
Intersection d'un cercle et d'une hyperbole
Modérateur : xcasadmin
Re: Intersection d'un cercle et d'une hyperbole
les polynomes en x et y n'apparaissent pas parce que a a deja ete remplace par une valeur approchee, donc x et y sont cherches en approx (d'ou pas de warning). Pour trouver l'equation en a directement:
S:=resultant(a^2-(x^2+y^2),(x-6)^2+(y-5)^2-49,y);
T:=resultant(a^2-(x^2+y^2),x(x-6)-y(y-5),y);
factor(resultant(S,T,x));
mais ca me parait un peu pousse pour des eleves de TS.
Ensuite comme pour toute equation de degre 4, on peut la resoudre par radicaux, mais ca n'a pas tellement d'interet: du point de vue calcul formel, on preferera un rootof (beaucoup plus facile a manier), et du point de vue numerique on preferera une methode iterative pour approcher les racines (type Newton).
S:=resultant(a^2-(x^2+y^2),(x-6)^2+(y-5)^2-49,y);
T:=resultant(a^2-(x^2+y^2),x(x-6)-y(y-5),y);
factor(resultant(S,T,x));
mais ca me parait un peu pousse pour des eleves de TS.
Ensuite comme pour toute equation de degre 4, on peut la resoudre par radicaux, mais ca n'a pas tellement d'interet: du point de vue calcul formel, on preferera un rootof (beaucoup plus facile a manier), et du point de vue numerique on preferera une methode iterative pour approcher les racines (type Newton).
Re: Intersection d'un cercle et d'une hyperbole
C'est en fait le premier exercice du concours général 2011.
Cet exercice se présente sous la forme d'un dessin.
Je pense que le script suivant ne trahit pas l'énoncé (le copier dans un niveau de géométrie):
La suite au prochain épisode.
Cet exercice se présente sous la forme d'un dessin.
Je pense que le script suivant ne trahit pas l'énoncé (le copier dans un niveau de géométrie):
Code : Tout sélectionner
legende([150,150],"OEFG est un rectangle");
legende([150,170],"ABCD est un rectangle intérieur à OEFG");
legende([150,190],"il s'agit de trouver la valeur maximale de a");
O:=point(0,affichage=quadrant3);
E:=point(6,affichage=quadrant4);
F:=point(6+5i);
G:=point(5i);
rectangle(O,E,F);
supposons(t=[0.516,0,6,0.001]);
A:=point(t,'affichage'=quadrant4);
B:=point(6+i*(sqrt(49-((6-t)^2))));
legende(milieu(A,B),"7",quadrant2);
segment(A,B);
p:=perpendiculaire(B,droite(A,B));
C:=inter_unique(p,droite(F,G),affichage=quadrant2);
legende(milieu(C,F),"x");
legende(milieu(B,F),"y");
legende(milieu(B,E),"5-y");
rectangle(A,B,C,D,affichage=rouge+epaisseur_ligne_3);
legende((t+abscisse(D))/2,"x",quadrant3);
segment(D,abscisse(D));
legende(milieu(D,abscisse(D)),"y",quadrant2);
legende(milieu(A,D),"a");
abscisse(D);
ordonnee(D);
longueur(A,D);
si abs(abscisse(D))<0.001 alors legende(milieu(A,E),"6-x",quadrant3) fsi;
Re: Intersection d'un cercle et d'une hyperbole
Une fois démontré que a est solution de a^4-159*a^2+840*a-588=0, le candidat devait donc résoudre cette équation !
Les rédacteurs supposent donc qu'un très bon élève de Terminale S est capable de mettre en œuvre la
Méthode de Ferrari pour autant que le delta ait une racine "repérable", à moins de trouver une solution astucieuse à ce problème ?
Finalement c'est un bon sujet de recherche en classe de TermS.
J'en ai profité pour chercher une fonction qui ferait ce travail,peut-être celle-ci:
Il ne reste plus qu'à prendre la racine comprise entre 0 et 1 dans la liste retournée par Ferrari:
select(t->(t>0 and t<1),Ferrari(subst(a^4-159*a^2+840*a-588,a=x)))
La fonction Norootof ne présentant pas d'intérêt, il vaut mieux se contenter de ceci:
J'ai testé avec des polynômes ayant 4 racines de la forme A,B,C,D suivantes:
A:=a*sqrt(k)+sqrt(b-c*sqrt(k));B:=a*sqrt(k)-sqrt(b-c*sqrt(k));C:=-a*sqrt(k)+sqrt(b+c*sqrt(k));D:=-a*sqrt(k)-sqrt(b+c*sqrt(k));
Q1:=reorder(normal((x-A)(x-B)(x-C)(x-D)),[x])
Q2:=normal(subst(Q1,[a,b,c,k],[-1,3,-2,7]))
P:=normal(subst(Q2,x=x+1))
csolve(P)
F:=Ferrari(P)
simplifier(F)
evalc(F)
Puis avec avec des polynômes ayant 4 racines de la forme A,B,C,D suivantes:
A:=sqrt(a)+sqrt(b)+sqrt(a*b);B:=sqrt(a)-sqrt(b)-sqrt(a*b);C:=-sqrt(a)+sqrt(b)-sqrt(a*b);D:=-sqrt(a)-sqrt(b)+sqrt(a*b);
Q1:=(normal(reorder((x-A)(x-B)(x-C)(x-D),[x]))
Q2:=normal(subst(Q1,[a,b],[2,3]))
P:=normal(subst(Q2,x=x+1))
csolve(P)
F:=Ferrari(P)
simplifier(F)
evalc(F)
Les rédacteurs supposent donc qu'un très bon élève de Terminale S est capable de mettre en œuvre la
Méthode de Ferrari pour autant que le delta ait une racine "repérable", à moins de trouver une solution astucieuse à ce problème ?
Finalement c'est un bon sujet de recherche en classe de TermS.
J'en ai profité pour chercher une fonction qui ferait ce travail,peut-être celle-ci:
Code : Tout sélectionner
NoRootof(L):={//à l'essai,facultatif,pour simplifier sans rootof
local temp,k;
temp:=NULL;
pour k de 0 jusque size(L)-1 faire
si lvar(simplifier(L)[k])!=[] alors
temp:=temp,sommet(lvar(simplifier(L)[k])[0])
fsi;
fpour
si member('rootof',temp) alors
retourne L;
sinon
retourne simplifier(L)
fsi;
}
:;
enlabs(E):={
//E=sqrt(cste) ou sqrt(cste*(binôme)^2) par ex sqrt(-5*(x+1)^2/4)
local temp,sol,a;
sol:=solve(E);
si sol==[] ou sol==[x] alors
retourne E
sinon
a:=sol[0];
supposons(x>a);
temp:=evalc(E);
purge(x);
retourne temp;//(i)*((sqrt(5)*x)/2+(sqrt(5))/2)
fsi;
}
:;
Ferrari(P):={//P polynôme de degré 4
local E,P2,u,F,L,delta,sol,k,v,S,E1,E2,a;
//E sous forme x^4+ax^2+bx+c
E:=normal(normal(subst(P,x=x-coeff(P,x,3)/(4*coeff(P,x,4))))/coeff(P,x,4));
P2:=poly2symb(tail(tail(coeff(-E))));
purge(u);
F:=op(reorder((x^2+u)^2,[x,u]));
F[0]:=P2;
F:=sum(F);
L:=coeff(F,x);
delta:=L[1]^2-4*L[0]*L[2];//polynôme de degré 3 en u
sol:=solve(delta,u);
afficher(sol);
//tester si sol contient un rationnel
si a:=member(DOM_RAT,apply(x->type(x),sol)) alors
v:=sol[a-1];
sinon
si a:=member(DOM_INT,apply(x->type(x),sol)) alors
v:=sol[a-1];
sinon
retourne round(csolve(P),4);
fsi;
fsi;
//S:=eval(simplifier(sqrt(factor(subst(F,u=v)))));
S:=simplifier(sqrt(factor(subst(F,u=v))));
afficher(factor(subst(F,u=v)));//cste*(binôme)^2 ou cste
afficher(S);//avec valeur absolue éventuelle
S:=enlabs(S);//sans valeur absolue
afficher(S);//pour vérifier que S est sans valeur absolue
E1:=subst(x^2+u,u=v)-S;
E2:=subst(x^2+u,u=v)+S;
afficher(E1);afficher(E2);//pour vérifier les équations
//au choix ligne 64 ou 66
//retourne apply(t->t-coeff(P,x,3)/(4*coeff(P,x,4)),csolve(E1) union csolve(E2));//ne pas simplifier
//si nécessaire faire simplifier(ans()) ou evalc(ans()) dans un autre niveau ou:
retourne NoRootof(apply(t->t-coeff(P,x,3)/(4*coeff(P,x,4)),csolve(E1) union csolve(E2)));//à l'essai
}
select(t->(t>0 and t<1),Ferrari(subst(a^4-159*a^2+840*a-588,a=x)))
La fonction Norootof ne présentant pas d'intérêt, il vaut mieux se contenter de ceci:
Code : Tout sélectionner
enlabs(E):={
//E=cste ou cste*abs(binôme) par ex -3 ou 5*i*abs(x+1)/4
local temp,sol,a;
sol:=solve(E);
si sol==[] ou sol==[x] alors
retourne E
sinon
a:=sol[0];
supposons(x>a);
temp:=eval(E);
purge(x);
retourne temp;//-3 ou 5*i*(x+1)/2
fsi;
}
:;
Ferrari(P):={//P polynôme de degré 4
local E,P2,u,F,L,delta,sol,k,v,S,E1,E2,T,a;
//E sous forme x^4+ax^2+bx+c
E:=normal(normal(subst(P,x=x-coeff(P,x,3)/(4*coeff(P,x,4))))/coeff(P,x,4));
P2:=poly2symb(tail(tail(coeff(-E))));
purge(u);
F:=op(reorder((x^2+u)^2,[x,u]));
F[0]:=P2;
F:=sum(F);
L:=coeff(F,x);
delta:=L[1]^2-4*L[0]*L[2];//polynôme de degré 3 en u
sol:=solve(delta,u);
afficher(sol);
//tester si sol contient un rationnel
si a:=member(DOM_RAT,apply(x->type(x),sol)) alors
v:=sol[a-1];
sinon
si a:=member(DOM_INT,apply(x->type(x),sol)) alors
v:=sol[a-1];
sinon
retourne round(csolve(P),4);
fsi;
fsi;
S:=evalc(sqrt(factor(subst(F,u=v))));
afficher(factor(subst(F,u=v)));//cste*(binôme)^2 ou cste
afficher(S);//avec valeur absolue éventuelle
S:=enlabs(S);//sans valeur absolue
afficher(S);//pour vérifier que S est sans valeur absolue
E1:=subst(x^2+u,u=v)-S;
E2:=subst(x^2+u,u=v)+S;
afficher(E1);afficher(E2);//pour vérifier les équations
retourne apply(t->t-coeff(P,x,3)/(4*coeff(P,x,4)),csolve(E1) union csolve(E2));//ne pas simplifier
//si nécessaire faire simplifier(ans()) ou evalc(ans()) dans le niveau du dessous
}
A:=a*sqrt(k)+sqrt(b-c*sqrt(k));B:=a*sqrt(k)-sqrt(b-c*sqrt(k));C:=-a*sqrt(k)+sqrt(b+c*sqrt(k));D:=-a*sqrt(k)-sqrt(b+c*sqrt(k));
Q1:=reorder(normal((x-A)(x-B)(x-C)(x-D)),[x])
Q2:=normal(subst(Q1,[a,b,c,k],[-1,3,-2,7]))
P:=normal(subst(Q2,x=x+1))
csolve(P)
F:=Ferrari(P)
simplifier(F)
evalc(F)
Puis avec avec des polynômes ayant 4 racines de la forme A,B,C,D suivantes:
A:=sqrt(a)+sqrt(b)+sqrt(a*b);B:=sqrt(a)-sqrt(b)-sqrt(a*b);C:=-sqrt(a)+sqrt(b)-sqrt(a*b);D:=-sqrt(a)-sqrt(b)+sqrt(a*b);
Q1:=(normal(reorder((x-A)(x-B)(x-C)(x-D),[x]))
Q2:=normal(subst(Q1,[a,b],[2,3]))
P:=normal(subst(Q2,x=x+1))
csolve(P)
F:=Ferrari(P)
simplifier(F)
evalc(F)
Dernière modification par alb le jeu. avr. 21, 2011 4:25 pm, modifié 3 fois.
Re: Intersection d'un cercle et d'une hyperbole
je ne connais pas les conditions de passage de ce type d'epreuve, et je n'ai pas regarde l'enonce, mais peut-etre que les redacteurs du probleme s'attendaient a l'usage d'un polynomial rooter sur calculatrice?
Re: Intersection d'un cercle et d'une hyperbole
L'énoncé et un corrigé se trouvent ici
Pour le correcteur l'élève devait trouver la racine entière -42 en programmant sa "calculatrice de poche".
Pour le correcteur l'élève devait trouver la racine entière -42 en programmant sa "calculatrice de poche".