Poster un nouveau sujet Poster une réponse
Systeme d'équation
Auteur Message
youkef
Invité
Posté le : Ven 03 Fév 2012, 16:10   Citer 


Code

:EffEcr
:Lbl 00
:Menu("SYSTEME D'EQUATION","2 INCONNUES",01,"3 INCONNUES",02,"EQUATION 2 DEGRE",03,"QUITTER",04)
:Lbl 04
:Stop
:EffEcr
:End
:Lbl 01
:Output(1,1,"SYSTEME EQUATION")
:Output(2,5,"{AX+BY=C")
:Output(3,5,"{DX+EY=F")
:Disp "","","",""
:Input "A=",A
:Input "B=",B
:Input "C=",C
:Input "D=",D
:Input "E=",E
:Input "F=",F
:(A*F-D*C)/(A*E-B*D)->Y
:(C*E-F*B)/(A*E-B*D)->X
:EffEcr
:Output(1,1,"SOLUTION:")
:Output(3,1,"X=")
:Output(5,1,"Y=")
:Output(5,3,Y)
:Output(3,3,X)
:Pause
:EffEcr
:Goto 00
:Lbl 02
:Output(1,1,"SYSTÈME D'EQUATION")
:Output(2,3,"{AX+BY+CZ=J")
:Output(3,3,"{DX+EY+FZ=K")
:Output(4,3,"{GX+HY+IZ=L")
:Disp "","","","",""
:Input "A=",A
:Input "B=",B
:Input "C=",C
:Input "D=",D
:Input "E=",E
:Input "F=",F
:Input "G=",G
:Input "H=",H
:Input "I=",I
:Input "J=",J
:Input "K=",K
:Input "L=",L
:EffEcr
:Output(1,1,"SOLUTION:")
:A*E*I+B*F*G+C*D*H-G*E*C-H*F*A-I*D*B->D
:J*E*I+B*F*L+C*K*H-L*E*C-H*F*J-I*K*B->θ
:θ/D->X
:A*K*I+J*F*G+C*D*L-G*K*C-L*F*A-I*D*J->W
:W/D->Y
:A*E*L+B*K*G+J*D*H-G*E*J-H*K*A-L*D*B->V
:V/D->Z
:Output(3,1,"X=")
:Output(4,1,"Y=")
:Output(5,1,"Z=")
:Output(3,3,X)
:Output(4,3,Y)
:Output(5,3,Z)
:Pause
:EffEcr
:Goto 00
:Lbl 03
:EffEcr
:Output(1,4,"AX²+BX+C")
::Input "A=",A
:Input "B=",B
:Input "C=",C
:EffEcr
:Output(1,4,"AX²+BX+C")
:B*B-4*A*C->D
:Output(3,1,"DISCRI.:")
:Output(3,9,D)
:If D>0
:Then
:(-B-D^1/2)/2*A->x
:(-B+D^1/2)/2*A->Y
:Output(5,1,"X'=")
:Output(7,1,"X''=")
:Output(5,4,X)
:Output(7,5,Y)
:Else
:If D=0
:Then
:-B/2*A->X
:Output(3,1,"X=Y=")
:Output(3,5,X)
:Else
:If D<0
:Then
:Output(5,1,"PAS DE SOLUTION")
:End
:End
:End
:Pause
:EffEcr
:Goto 00






  Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Ven 03 Fév 2012, 18:15   Citer 

ça me parait intéressant, mais c'est simplifiable.

- Input "A=",A peut s'écrire Prompt A.
- Mets des Lbl à un seul chiffre
- Autant mettre le Lbl 4 a la fin, ça économise un "stop"
- AU début, mets le EffEcr après le Lbl 0, comme ça, pas besoin d'en rajouter un a chaque Goto 0



Code

:Lbl 0
:EffEcr
:Menu("SYSTEME D'EQUATION","2 INCONNUES",1,"3 INCONNUES",2,"EQUATION 2 DEGRE",3,"QUITTER",4)
:Lbl 1
:Disp "SYSTEME EQUATION"
:Output(2,5,"{AX+BY=C")
:Output(3,5,"{DX+EY=F")
:Disp "","","",""
:Pause
:Prompt A,B,C,D,E,F
:(A*F-D*C)/(A*E-B*D)->Y
:(C*E-F*B)/(A*E-B*D)->X
:EffEcr
:Output(1,1,"SOLUTION:")
:Output(3,1,"X=")
:Output(5,1,"Y=")
:Output(5,3,Y)
:Output(3,3,X)
:Pause
:Goto 0
:Lbl 2
:Output(1,1,"SYSTÈME D'EQUATION")
:Output(2,3,"{AX+BY+CZ=J")
:Output(3,3,"{DX+EY+FZ=K")
:Output(4,3,"{GX+HY+IZ=L")
:Disp "","","","",""
:Prompt A,B,C,D,E,F,G,H,I,J,K,L
:EffEcr
:Disp "SOLUTION:"
:A*E*I+B*F*G+C*D*H-G*E*C-H*F*A-I*D*B->D
:J*E*I+B*F*L+C*K*H-L*E*C-H*F*J-I*K*B->@
:@/D->X
:A*K*I+J*F*G+C*D*L-G*K*C-L*F*A-I*D*J->W
:W/D->Y
:A*E*L+B*K*G+J*D*H-G*E*J-H*K*A-L*D*B->V
:V/D->Z
:Output(3,1,"X=")
:Output(4,1,"Y=")
:Output(5,1,"Z=")
:Output(3,3,X)
:Output(4,3,Y)
:Output(5,3,Z)
:Pause
:Goto 0
:Lbl 3
:EffEcr
:Output(1,4,"AX²+BX+C")
:Prompt A,B,C
:EffEcr
:Output(1,4,"AX²+BX+C")
:B*B-4*A*C->D
:Output(3,1,"DISCRI.:")
:Output(3,9,D)
:If D>0
:Then
:(-B-D^1/2)/2*A->x
:(-B+D^1/2)/2*A->Y
:Output(5,1,"X'=")
:Output(7,1,"X''=")
:Output(5,4,X)
:Output(7,5,Y)
:Else
:If D=0
:Then
:-B/2*A->X
:Output(3,1,"X=Y=")
:Output(3,5,X)
:Else
:If D<0
:Then
:Output(5,1,"PAS DE SOLUTION")
:End
:End
:End
:Pause
:EffEcr
:Goto 0
:Lbl 4



Voilà déjà un code un peu plus léger, et il y a encore moyen de beaucoup somplifier:

- au lieu de faire:

Code

:calcul -> variable
:Output(Y,X,"variable="
:Output(Y,X,variable

tu peux faire:

:Output(Y,X,"variable="
:Output(Y,X,calcul



Il y aurait encore possibilité de réduire par des méthodes d'optimisation, si tu connais:

If D=0 remplacé par If non(D par exemple, supprimer les parenthèses et guillemets de fin de ligne...

Mais c'est un bon programme.

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 03 Fév 2012, 21:34   Citer 

Sympatique bigmouth.gif Globalement bien réalisé.
Tient, le temps que je revienne au net persalteas est passé. Donc certains conseils déjà traîtés.

quelques conseils techniques :

Remplacer les longues séries de Input par "Prompt A,B,C,D,..."

"A*E*I" remplacé par "AEI"

Ces lignes doivent être corrigées :
Code
(-B-D^1/2)/2*A->x
(-B+D^1/2)/2*A->Y

 // défaut : il manque des parenthèses au dénominateur
 // .5 vaut 1/2 mais est moins lourd (je crois même qu'il y a un bug si on ne met pas de parenthèses, mais par la suite ça se corrige sans s'en préoccuper)

(-B-D^.5)/(2A->X
(-B+D^.5)/(2A->Y

 // une racine carrée me semble mieux qu'une puissance 1/2

(-B-rac(D))/(2A->X
(-B+rac(D))/(2A->Y



développement possible pour les systèmes :

Dans un second temps on peut utiliser les matrices, cela donnerais des résultats pour tous les systèmes quels que soient leurs dimensions par certaines méthodes.
L'une des méthodes simplifie le système et la solution est alors souvent facile à trouver. (edit: gauss-jordan)
Mais ce que je proposerai ici sera réservé aux situations à solutions uniques comme dans le programme initial. (inversion de matrice)


Code
Menu("","2 INCONNUES-EQUA",1,"3 INCONNUES-EQUA",2
Lbl 1
Prompt A,B,C,D,E,F
[[A,B][D,E->[A]  // [A] saisi grâce au menu matrice
[[C][F->[B] // idem pour B mais pas C
Disp [A]^-1*[B]  // idem // ^-1 saisi OBLIGATOIREMENT avec la touche [x^-1]
 // donne X et Y.
Stop
Lbl 2
Prompt A,B,C,D,E,F,G,H,I,J,K,L
[[A,B,C][D,E,F][G,H,I->[A]
[[J][K][L->[B]
Disp [A]^-1*[B]  // donne X,Y,Z



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Ven 03 Fév 2012, 23:16   Citer 

Par rapport au système résolu par les matrices, cela me fait penser à ce sujet.
Sinon y'a aussi la méthode de Gauss-Jordan.

Sangohan38

 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 04 Fév 2012, 10:34   Citer 

Sinon encore un autre : résolution de x equations à x inconues

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes