π
<-
Chat plein-écran
[^]

Solveur d'équations multi-fonctions

Solveur d'équations multi-fonctions

Unread postby Wistaro » 23 Dec 2014, 11:35

Bonjour à tous!

Aujourd'hui je viens vous présenter mon nouveau programme, plutôt utile!


Ce programme est un pack de logiciels permettant de résoudre des équations de niveau collège/lycée.

Il se compose de 3 parties:

1) Un solveur d'équation de premier degré, en mode pas à pas (résolution commentée). Vous trouverez plus d'information au sujet de ce logiciel ici: archives_voir.php?id=85048

2) Un solveur de système d'équation à 2 inconnues

3) Un logiciel permettant de trouver les racines d'un trinôme du second degré.

ScreenShoot

Image

Lien direct

archives_voir.php?id=131151



Code source:


Code: Select all
Lbl A
AxesOff:GridOff
DelVar XDelVar L26->dim(L2
1->C
ClrHome
Output(4,1,"EQUATIONS SOLVER
Output(5,1,"v2.0 - Wistaro
For(A,1,16
Output(6,A,"+
Output(3,17-A,"+
End
Pause
Menu("EQUATIONS SOLVER","1er degre",1,"Systemes",S,"Polynomes",P,"Quitter",Q
Lbl Q:Stop
Lbl S:ClrDraw
{0,0,0,1}->|LVER
{0,0,0,1}->|LVEC:{0,0,0,1}->|LVEB
{0,0,0,1}->|LVEA:{0,0,0,1}->|LVED
ClrDraw:Text(1,1,"Commencez par reduire"
Text(7,1,"votre systeme comme":Text(14,1,"cet exemple:"
Text(30,5,"3X-5Y=2":Text(37,5,"7X+3Y=12"
Text(50,1,"X + Y = n":Text(55,1,"X + Y = n":Pause
Lbl G:ClrHome:ClrHome
Output(5,1,"Equation n^^o":Output(5,12,|LVER(4)
Pause :ClrHome
Disp "nb de X":Input "",X
Output(8,1,X:Output(8,3,"X"
Disp "nb de Y":Input "",Y
Output(8,1,X:Output(8,3,"X"
Output(8,5,"+":Output(8,7,Y
Output(8,9,"Y":Disp "nb d'unitees"
Input "",U:Output(8,1,X
Output(8,3,"X":Output(8,5,"+"
Output(8,7,Y:Output(8,9,"Y"
Output(8,11,"=":Output(8,13,U
Pause
If |LVER(4)=1:Then
{X,Y,U,2}->|LVER:Goto G:End
If |LVER(4)=2:Then
{X,Y,U,2}->|LVEC
End:Goto R
Lbl R:ClrDraw
ClrHome
{|LVER(1),|LVEC(1)}->|LVEA:{|LVER(2),|LVEC(2)}->|LVEB
{|LVER(3),|LVEC(3)}->|LVED
List>matr(|LVEA,|LVEB,|LVED,[A]
rref([A])->[A]:ClrHome
[A](1,3)->A
[A](2,3)->B:Disp "Le couple","solution est:"
Output(6,1,"X=
Output(6,4,A
Output(7,1,"Y=
Output(7,4,B
Pause
DelVar |LVEADelVar |LVEBDelVar |LVECDelVar |LVEDDelVar |LVER
ClrHome:Goto A
Lbl P:ClrHome
Disp "AX^^2+BX+C
Disp "
Prompt A,B,C
If A=0:Then
Disp "Fonction affine"," S= ",~(B/C):Stop:End
B^^2-4AC->D
(Ans>0)+(Ans>=0)
Disp "Il y a ",sub("012",Ans+1,1)+" racines
If Ans:Then
.5A^~1seq(~B+C*sqrt(D)>Frac,C,1-Ans,1,2->L1
Pause L1:
Else:Pause
End
Goto A
Lbl 1:ClrHome
DelVar L1
Input "?>",Str1
ClrHome
Disp "PLEASE WAIT...
inString(Str1,"="->P
If not(P:Then
length(Str1)+1->P
Str1+"=0"->Str1
End
length(Str1->L
Str1->Str9
Lbl 9
Str9->Str1
If C=1:Then
sub(Str9,1,P-1->Str1
length(Str1->V
expr(Str1->L2(C+2
End
If C=2:Then
inString(Str9,"=")->P
sub(Str9,P+1,length(Str9)-P->Str1
length(Str1->V
expr(Str1->L2(C+2
End
If not(inString(Str1,"X"):Then
{0}->L1
Goto 6
End
1->T
Lbl 5
length(Str1->V
If inString(Str1,"X":Then
inString(Str1,"X"->A
Repeat Str3="+" or Str3="-" or A=1
If A>1:A-1->A
sub(Str1,A,1)->Str3
End
If A=1:sub(Str1,1,inString(Str1,"X")-A->Str4
If A>1:sub(Str1,A+1,inString(Str1,"X")-(A+1)->Str4
End
T->dim(L1
sub(Str4,1,1
If Ans="+" or Ans="-" or Ans="*" or Ans="/":sub(Str4,2,length(Str4)-A)->Str4
expr(Str4->L1(T
inString(Str1,"X"->P
If V-P:Then
inString(sub(Str1,P+1,V-P),"X")->Q:Else:Goto 6:End
If V>P and Q
Then
sub(Str1,P+1,V-P)->Str1
T+1->T
Goto 5
End
Lbl 6:ClrHome
ClrDraw
DelVar Esum(L1->L2(C
If C=1:Then
2->C:Goto 9
End
L2(1)-L2(2->A
L2(4)-L2(3->B
If A<0:Then
~A->A:~B->B:End
ClrHome
DelVar {Y1}
Text(0,0,Str9
Text(7,0,"<=> ",L2(1),"X+",L2(3),"=",L2(2),"X+",L2(4
Text(14,0,"<=> ",A,"X+",L2(3),"=",L2(4)
Text(21,0,"<=> ",A,"X=",B
If not(A:Goto 8
Text(28,0,"<=> X="
If not(fPart(B/A:Then
Text(47,0,B/A
Else
If not(fPart(A)) and not(fPart(B):Then
If A<0:Then:~A->F:Else:A->F:End
If B<0:Then:~B->G:Else:B->G:End
A/gcd(F,G)->A
B/gcd(F,G)->B
End
Text(35,0,B
Text(49,0,A
StorePic 1
If A<0:Then:~A->A:1->E:End
If B<0:Then:~B->B:1->E:End
max({A,B->M
{0,1->L1:{0,M->L2
LinReg(ax+b) L1,L2,{Y1}
Equ>String({Y1},Str1
sub(Str1,1,length(Str1)-3->Str1
DelVar {Y1}
For(D,0,length(Str1)+E
Text(42,3D,"-
End
Text(57,0,"=",B/A
RecallPic 1
End
Pause :ClrDraw
Disp "
Stop
Lbl 8
If L2(3:Text(30,0,"S= <ensemble vide>
If not(L2(3:Then
Text(30,0,"S=   R
Line(~7.8,0,~7.8,~1.2
End
Pause :Goto A
Nouveau sur le site,
Anonymous
? Avant de poster sur le chat et sur le forum, n'oublie pas de . En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:

Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 63.6%
 
Posts: 2957
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
Class: Etudiant ingénieur (dernière année)
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Solveur d'équations multi-fonctions

Unread postby Mingerton » 23 Dec 2014, 12:13

Tiens, comme l'autre jour sur Tout82 ça ne t'a pas plus que personne n'ait testé Clash of Clans TI, je teste celui ci pour me rattraper. Désolé ça d'habitude je prends toujours le temps de tester les nouveautés, mais bon c'est pas toujours possible ;)


Comme toujours c'est un code propre, rien à dire là dessus. Mais il reste deux trois améliorations à ajouter en beta :
- La solution de l'équation du premier degré s'affiche très loin de sa place destinée ;
- Les solutions toutes confondues ne sont pas en forme fractionnaire ;
- L'écran ne s'efface pas après usage.

(Testé avec jstified de Cemetech)

Je ne vais pas me lancer sur des optimisations à deux octets, mais dans le code que j'ai testé je les ai effectuées. Le code ressemble donc à ça :

Code: Select all
Lbl A
AxesOff:GridOff
DelVar XDelVar L26->dim(L2
1->C
ClrHome
Output(4,1,"EQUATIONS SOLVER
Output(5,1,"v2.0 - Wistaro
For(A,1,16
Output(6,A,"+
Output(3,17-A,"+
End
Pause
Menu("EQUATIONS SOLVER","1er degre",1,"Systemes",S,"Polynomes",P,"Quitter",Q
Lbl Q:Stop
Lbl S:ClrDraw
{0,0,0,1}->|LVER
{0,0,0,1}->|LVEC:{0,0,0,1}->|LVEB
{0,0,0,1}->|LVEA:{0,0,0,1}->|LVED
ClrDraw:Text(1,1,"Commencez par reduire"
Text(7,1,"votre systeme comme
Text(14,1,"cet exemple:
Text(30,5,"3X-5Y=2
Text(37,5,"7X+3Y=12
Text(50,1,"X + Y = n
Text(55,1,"X + Y = n
Pause
Lbl G:ClrHome:ClrHome
Output(5,1,"Equation n^^o
Output(5,12,|LVER(4
Pause :ClrHome
Disp "nb de X
Input "",X
Output(8,1,X:Output(8,3,"X
Disp "nb de Y
Input "",Y
Output(8,1,X:Output(8,3,"X
Output(8,5,"+
Output(8,7,Y
Output(8,9,"Y
Disp "nb d'unitees
Input "",U:Output(8,1,X
Output(8,3,"X
Output(8,5,"+
Output(8,7,Y:Output(8,9,"Y
Output(8,11,"=
Output(8,13,U
Pause
If |LVER(4)=1:Then
{X,Y,U,2}->|LVER:Goto G:End
If |LVER(4)=2:Then
{X,Y,U,2}->|LVEC
End:Goto R
Lbl R:ClrDraw
ClrHome
{|LVER(1),|LVEC(1)}->|LVEA:{|LVER(2),|LVEC(2)}->|LVEB
{|LVER(3),|LVEC(3)}->|LVED
List>matr(|LVEA,|LVEB,|LVED,[A]
rref([A])->[A]:ClrHome
[A](1,3)->A
[A](2,3)->B:Disp "Le couple","solution est:"
Output(6,1,"X=
Output(6,4,A
Output(7,1,"Y=
Output(7,4,B
Pause
DelVar |LVEADelVar |LVEBDelVar |LVECDelVar |LVEDDelVar |LVER
ClrHome:Goto A
Lbl P:ClrHome
Disp "AX^^2+BX+C
Disp "
Prompt A,B,C
If A=0:Then
Disp "Fonction affine"," S= ",~(B/C
Stop
End
B^^2-4AC->D
(Ans>0)+(Ans>=0)
Disp "Il y a ",sub("012",Ans+1,1)+" racines
If Ans:Then
.5A^~1seq(~B+C*sqrt(D)>Frac,C,1-Ans,1,2->L1
Pause L1:
Else:Pause
End
Goto A
Lbl 1:ClrHome
DelVar L1
Input "?>",Str1
ClrHome
Disp "PLEASE WAIT...
inString(Str1,"="->P
If not(P:Then
length(Str1)+1->P
Str1+"=0"->Str1
End
length(Str1->L
Str1->Str9
Lbl 9
Str9->Str1
If C=1:Then
sub(Str9,1,P-1->Str1
length(Str1->V
expr(Str1->L2(C+2
End
If C=2:Then
inString(Str9,"=")->P
sub(Str9,P+1,length(Str9)-P->Str1
length(Str1->V
expr(Str1->L2(C+2
End
If not(inString(Str1,"X
Then
{0}->L1
Goto 6
End
1->T
Lbl 5
length(Str1->V
If inString(Str1,"X
Then
inString(Str1,"X"->A
Repeat Str3="+" or Str3="-" or A=1
If A>1:A-1->A
sub(Str1,A,1)->Str3
End
If A=1:sub(Str1,1,inString(Str1,"X")-A->Str4
If A>1:sub(Str1,A+1,inString(Str1,"X")-(A+1)->Str4
End
T->dim(L1
sub(Str4,1,1
If Ans="+" or Ans="-" or Ans="*" or Ans="/":sub(Str4,2,length(Str4)-A->Str4
expr(Str4->L1(T
inString(Str1,"X"->P
If V-P:Then
inString(sub(Str1,P+1,V-P),"X"->Q:Else:Goto 6:End
If V>P and Q
Then
sub(Str1,P+1,V-P->Str1
T+1->T
Goto 5
End
Lbl 6:ClrHome
ClrDraw
DelVar Esum(L1->L2(C
If C=1:Then
2->C:Goto 9
End
L2(1)-L2(2->A
L2(4)-L2(3->B
If A<0:Then
~A->A:~B->B:End
ClrHome
DelVar {Y1}
Text(0,0,Str9
Text(7,0,"<=> ",L2(1),"X+",L2(3),"=",L2(2),"X+",L2(4
Text(14,0,"<=> ",A,"X+",L2(3),"=",L2(4)
Text(21,0,"<=> ",A,"X=",B
If not(A:Goto 8
Text(28,0,"<=> X="
If not(fPart(B/A:Then
Text(47,0,B/A
Else
If not(fPart(A)) and not(fPart(B):Then
If A<0:Then:~A->F:Else:A->F:End
If B<0:Then:~B->G:Else:B->G:End
A/gcd(F,G)->A
B/gcd(F,G)->B
End
Text(35,0,B
Text(49,0,A
StorePic 1
If A<0:Then:~A->A:1->E:End
If B<0:Then:~B->B:1->E:End
max({A,B->M
{0,1->L1:{0,M->L2
LinReg(ax+b) L1,L2,{Y1}
Equ>String({Y1},Str1
sub(Str1,1,length(Str1)-3->Str1
DelVar {Y1}
For(D,0,length(Str1)+E
Text(42,3D,"-
End
Text(57,0,"=",B/A
RecallPic 1
End
Pause :ClrDraw
Disp "
Stop
Lbl 8
If L2(3:Text(30,0,"S= <ensemble vide>
If not(L2(3:Then
Text(30,0,"S=   R
Line(~7.8,0,~7.8,~1.2
End
Pause :Goto A


Je suis vraiment désolé mais j'ai pas eu le courage de rechercher la source du bug du X. Peut être provient-il de ces optimisations, bien que la partie concernée du code ne se trouve pas par ici d'après les labels. Pour les formes fractionnaires, n'est il pas possible d'afficher une liste en forme fractionnaire, ou sinon d'utiliser plutôt une nouvelle chaîne en y stockant le nombre sous forme fractionnaire ?

Quitte à faire un 8xp, pourquoi ne pas ajouter des accents aux mots puisque c'est possible mais pas recopiable ;) ? Cette amélioartions sera à oublier sur un 83p par contre sous peine d'avoir quelques soucis d'affichages :D
User avatar
MingertonAmbianceur
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 69.6%
 
Posts: 655
Images: 2
Joined: 13 May 2014, 19:36
Location: À l'infini
Gender: Male
Calculator(s):
Class: Américaine

Re: Solveur d'équations multi-fonctions

Unread postby scientifix » 23 Dec 2014, 12:34

Salut :)
Très bonne idée ton programme !! Pour les systèmes tu peux utiliser le pivot de Gauss (la commande s'appelle "Rref(" je crois) comme ça l'utilisateur pourra résoudre directement des systèmes de n équations linéaire à n inconnues ;) Utilise aussi la commande "Frac" pour avoir des valeurs exactes !! Pour les autres équations tu peux utiliser la dichotomie :D
Sinon, BRAVO ;)
User avatar
scientifix
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 42.6%
 
Posts: 81
Joined: 10 Sep 2013, 20:05
Gender: Not specified
Calculator(s):

Re: Solveur d'équations multi-fonctions

Unread postby Mingerton » 23 Dec 2014, 12:52

scientifix wrote:Pour les systèmes tu peux utiliser le pivot de Gauss (la commande s'appelle "Rref(" je crois) comme ça l'utilisateur pourra résoudre directement des systèmes de n équations linéaire à n inconnues

Code: Select all
{|LVER(1),|LVEC(1)}->|LVEA:{|LVER(2),|LVEC(2)}->|LVEB
{|LVER(3),|LVEC(3)}->|LVED
List>matr(|LVEA,|LVEB,|LVED,[A]
rref([A])->[A]

;)

Je ne pense pas que Frac fonctionne si il stocke ses valeurs dans des listes, c'est pourquoi j'ai proposé une chaine ;)
User avatar
MingertonAmbianceur
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 69.6%
 
Posts: 655
Images: 2
Joined: 13 May 2014, 19:36
Location: À l'infini
Gender: Male
Calculator(s):
Class: Américaine

Re: Solveur d'équations multi-fonctions

Unread postby Wistaro » 23 Dec 2014, 13:12

Le programme de résolution de systèmes n'est pas optimisé, en effet. Je vais corriger sa et le rendre compatible avec autant d'équations que possible (je me sert déjà du pivot de gauss).

XD Mingerton.
Dans mon programme du premier degré, la solution s'affiche sous la forme d'une fraction irréductible (si le résultat n'est pas exact). En dessous, s'affiche la valeur exacte. Impossible de gagner de la place là. Et de quel bug du X tu parles?
Nouveau sur le site,
Anonymous
? Avant de poster sur le chat et sur le forum, n'oublie pas de . En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:

Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 63.6%
 
Posts: 2957
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
Class: Etudiant ingénieur (dernière année)
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Solveur d'équations multi-fonctions

Unread postby Mingerton » 23 Dec 2014, 13:24

Attends je te mets un screen. Toujours récupéré avec Jstified :

Screen.png
Screen.png (11.07 KiB) Viewed 2927 times

Il ne s'affiche rien pour la fraction irréductible, mais une valeur exacte s'affiche plutôt loin. J'ai pensé que c'était un bug mais peut être est-ce normal après tout ? Je ne pensais pas à un gain de place mais j'essayais de comprendre pourquoi ça faisait ça.

Sinon, du coup il faudrait appliquer la règle de la fraction irréductible dans les autres résultats non ? ;)
User avatar
MingertonAmbianceur
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 69.6%
 
Posts: 655
Images: 2
Joined: 13 May 2014, 19:36
Location: À l'infini
Gender: Male
Calculator(s):
Class: Américaine

Re: Solveur d'équations multi-fonctions

Unread postby scientifix » 23 Dec 2014, 13:54

Pour le Pivot de Gauss j'avais vu ;) je voulais juste dire qu'au lieu de proposer seulement des systèmes de 2 équations à deux inconnus, le programme devrait avoir une commande "système d'équations linéaire" où l'utilisateur peut choisir son nombre d'équations etc ... Comme ça pas besoin d'avoir "système de 2 équations, 3 équations, 4 équations, 5 équations ... linéaires " dans le menu, il suffit juste d'avoir une ligne pour tous les systèmes dans le menu :)
Je ne sais pas si c'est très compréhensible mais en gros avoir dans le menu :

-1e degré
-2nd degré
-systèmes de n équations à n inconnues

Après tu peux utiliser la dichotomie pour résoudre tous types d'équations à 1 inconnue ... donc tu peux rajouter une fonction "solveur" dans ton programme ;)
User avatar
scientifix
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 42.6%
 
Posts: 81
Joined: 10 Sep 2013, 20:05
Gender: Not specified
Calculator(s):

Re: Solveur d'équations multi-fonctions

Unread postby Wistaro » 23 Dec 2014, 18:43

Mingerton : Bizarre, sa marche très bien sur ma calculatrice... Et si tu tapes le même calcul que le screen?

Scientifix: Okay, je vais voir sa, merci ;-)
Nouveau sur le site,
Anonymous
? Avant de poster sur le chat et sur le forum, n'oublie pas de . En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:

Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 63.6%
 
Posts: 2957
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
Class: Etudiant ingénieur (dernière année)
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Solveur d'équations multi-fonctions

Unread postby Adriweb » 23 Dec 2014, 19:20

User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 54.5%
 
Posts: 12964
Images: 1087
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: Solveur d'équations multi-fonctions

Unread postby Wistaro » 03 Jan 2015, 21:31

Merci Adriweb :)
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 63.6%
 
Posts: 2957
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
Class: Etudiant ingénieur (dernière année)
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Next

Return to TI-Basic

Who is online

Users browsing this forum: No registered users and 11 guests

-
Search
-
Featured topics
L'OS 5.5 de la TI-83 Premium CE / 84 Plus CE supprime l'assembleur - la plupart des jeux et certains programme ne fonctionneront plus
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Comparaisons des meilleurs prix pour acheter sa calculatrice !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
694 utilisateurs:
>679 invités
>10 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)