Page 1 of 1

factorisation sans discriminant

Unread postPosted: 24 Sep 2013, 21:00
by NspireCas
Bonsoir,
J'ai publié il y a de cela 11 jours ce programme de factorisation pas à pas sans les deltas (je l'avais programmé un jour où j'étais malade, et donc où je n'étais pas à l'école :D )
Seulement, je me rends compte que le "pas à pas" est très lacunaire, (et j'ai un peu honte des 90 téléchargements Image).
Dans mon archive, il y a deux programmes, le premier ne marche pas dans tous les cas, et est très lacunaire, le deuxième quant à lui a des erreurs :? et la fin est lacunaire.

Bref, j'aimerais savoir s'il existe une méthode par étape (donc programmable) pour factoriser une expression du second degré sans la résoudre avec le delta (c'est le but du programme)...

Merci de vos aides

P.S: l'objectif est une Grande Mise à jour de l'archive

Edit : la mise à jour est disponible! (voir mon message à la fin)

Re: factorisation sans discriminant

Unread postPosted: 24 Sep 2013, 21:03
by critor
Je ne pense pas, puisque le cas général repose bien sur la détermination du discriminant.
Après, tu as d'autres méthodes, mais qui ne marchent que sur des cas particuliers.

Qu'est-ce qui t'embête avec le discriminant?
Tant que tu en détailles le calcul et les racines avant de factoriser, c'est bien un programme par étapes?

PS: 90 téléchargements en 11 jours en période creuse, c'est tout bonnement excellent ;)

Re: factorisation sans discriminant

Unread postPosted: 24 Sep 2013, 21:06
by NspireCas
PS: 90 téléchargements en 11 jours en période creuse, c'est tout bonnement excellent ;)


Merci critor, ça fait vraiment plaisir :)

En fait, dans mon école, beaucoup de seconde demande un programme de factorisation, mais ils n'ont pas encore appris le discriminant...

Re: factorisation sans discriminant

Unread postPosted: 24 Sep 2013, 21:09
by critor
Si c'est pour du second degré, cela correspond donc:
- aux identités remarquables(discriminant nul, b=0)
- au facteur commun (c=0)

Re: factorisation sans discriminant

Unread postPosted: 24 Sep 2013, 22:43
by NspireCas
J'ai une question en ti-basic
Le code est disp "il faut donc que",solve(k*a+b=0,a)
et ça affiche il faut donc que a = 3 par exemple.
Je voudrais savoir comment enregister dans une variable juste le résultat, sans que ça affiche "définition circulaire"
Merci

Edit : c'est bon, il fallait mettre a:=-b/k

Re: factorisation sans discriminant

Unread postPosted: 24 Sep 2013, 22:49
by Bisam
La fonction "solve" renvoie un résultat du type "variable = valeur", voire "variable = valeur1 ou variable = valeur2 ou variable = valeur3 etc..."
Toi, tu veux enregistrer uniquement la (ou les) valeur(s).
Pour cela, il existe une fonction qui convertit le résultat renvoyé par "solve" en une liste de la (ou des) valeur(s) : c'est la fonction "exp>list".
Tu peux ensuite récupérer une des valeurs de cette liste.

Tu peux aussi (dans le cas où tu es sûr qu'il n'y a qu'une seule réponse possible) prendre le membre de gauche de l'égalité à l'aide de la fonction "left".

Enfin, dans le cas ultra simple qui t'intéresse, tu peux simplement résoudre à la main et faire directement le calcul... à savoir "a:=-b/k"

Re: factorisation sans discriminant

Unread postPosted: 24 Sep 2013, 22:54
by NspireCas
J'ai pas compris exp>list,
comment on l'utilise ? exp(solve(ax^2+bx+c=0,x)) sto list, y a erreur, "l'argument doit être une expression"

Re: factorisation sans discriminant

Unread postPosted: 24 Sep 2013, 22:58
by Bisam
Cherche dans le catalogue la fonction qui se nomme "exp>list" (avec un triangle noir à la place du > )

Tu peux l'utiliser ainsi :
Code: Select all
a:=exp>list(solve(k*a+b=0,a),a)[1]

"exp>list" récupère la liste des solutions du "solve", puis le ..[1] récupère le premier élément de cette liste (il n'y en a qu'un ici !) et enfin, on stocke le résultat dans la variable "a".

Dans tous les cas, va voir dans le manuel lorsque tu ne sais pas comment utiliser une fonction !!

Re: factorisation sans discriminant

Unread postPosted: 24 Sep 2013, 23:02
by NspireCas
Merci beaucoup, ça marche !
(je croyais que > voulait dire sto et non le triangle noir)
la prochaine fois je vérifierai dans le catalogue :P

Re: factorisation sans discriminant

Unread postPosted: 25 Sep 2013, 08:08
by NspireCas
La mise à jour est disponible ici
Le programme est maintenant beaucoup plus simple et fonctionne pour toutes les expressions factorisables du second degré.
Pour revenir au topic, voici la méthode pour factoriser sans discriminant par exemple f(x)=x^2-x-2
Le programme affichera:
Show/Hide spoilerAfficher/Masquer le spoiler
f(x)= x^(2)-x-2
On pose x= y+a
 1 *(y+a)^2+ −1 *(y+a)+ −2 =0
 y^(2)+2*a*y+a^(2) + −y-a + −2 =0
 y^(2)+(2*a-1)*y+a^(2)-a-2 =0
On essaye d'annuler ( 2 a+ −1 )*y
Il faut donc que  a=((1)/(2))
On remplace a dans l'expression y^(2)+(2*a-1)*y+a^(2)-a-2
 y^(2) + 1 *( ((1)/(2)) )^2- ((1)/(2)) * −1 + −2 =0
 y^(2) + ((1)/(4)) - ((−1)/(2)) + −2 =0
 y^(2)-((9)/(4)) =0
⇔ (y-1.5)*(y+1.5) =0
 y=((−3)/(2)) or y=((3)/(2))
y1→1ere soluce, et y2→2eme
On a y et a, on peut maintenant
trouver x, car
x=y+a
x1=y1+ ((1)/(2)) = −1.5 + ((1)/(2)) = −1.
x2=y2+ ((1)/(2)) = 1.5 + ((1)/(2)) = 2.
f(x)= a*(x-x1)*(x-x2)
f(x)= (x-x1)*(a*x-a*x2)
Donc f(x)= (x-2)*(x+1)

Le code étant :
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
Define fact(e,b,c)=
Prgm
:Disp "f(x)=",e*x^(2)+b*x+c
:Disp "On pose x= y+a"
:Disp "",e,"*(y+a)^2+",b,"*(y+a)+",c,"=0"
:Disp "",expand(e*(y+a)^(2)),"+",expand(b*(y+a)),"+",c,"=0"
:Disp "",expand(e*(y+a)^(2))+expand(b*(y+a)+c),"=0"
:k:=2*e
:Disp "On essaye d'annuler (",k,"a+",b,")*y"
:Disp "Il faut donc que ",solve(k*a+b=0,a)
:j:=expand(e*(y+a)^(2))+expand(b*(y+a)+c)
:Disp "On remplace a dans l'expression",j
:a:=((−b)/(k))
:Disp "",e*y^(2),"+",e,"*(",a,")^2-",a,"*",b,"+",c,"=0"
:Disp "",e*y^(2),"+",e*a^(2),"-",a*b,"+",c,"=0"
:Disp "",expand(e*(y+a)^(2))+expand(b*(y+a)+c),"=0"
:Disp "⇔",(factor(expand(e*(y+a)^(2))+expand(b*(y+a)+c)))▶Decimal,"=0"
:Disp "",solve(factor(expand(e*(y+a)^(2))+expand(b*(y+a)+c))=0,approx(y))
:Disp "y1→1ere soluce, et y2→2eme"
:Disp "On a y et a, on peut maintenant
trouver x, car"
:Disp "x=y+a"
:Disp "x1=y1+",a,"=",nSolve(factor(expand(e*(y+a)^(2))+expand(b*(y+a)+c))=0,y,−∞,0),"+",a,"=",nSolve(factor(expand(e*(y+a)^(2))+expand(b*(y+a)+c))=0,y,−∞,0)+a
:Disp "x2=y2+",a,"=",nSolve(factor(expand(e*(y+a)^(2))+expand(b*(y+a)+c))=0,y,0,∞),"+",a,"=",nSolve(factor(expand(e*(y+a)^(2))+expand(b*(y+a)+c))=0,y,0,∞)+a
:Disp "f(x)= a*(x-x1)*(x-x2)"
:Disp "f(x)= (x-x1)*(a*x-a*x2)"
:Disp "Donc f(x)=",factor(e*x^(2)+b*x+c)
:ClearAZ
:EndPrgm

N'hésitez pas si vous avez des questions sur le programme ou le code ;)

P.S: Merci Bisam pour l'astuce
critor, merci quand même