Gamme TI-82
Partager sur Facebook Fil RSS Imprimer la page
Cacher les résultats

Résultat de la recherche



Poster un nouveau sujet Poster une réponse
Equilibrer les équations chimiques stoechiométriques
Auteur Message
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 02 Fév 2011, 21:22   Citer 

Ce programme était supposé aller avec un autre programme mais je n'ai toujours pas fini l'autre (acido-basique & oxido-réduction). (j'y suis depuis juillet)

STOECHIO 6.2
Pour TI83 et TI82stat(fr)

Une notice de mon programme.

-il équilibre uniquement les coefficients
-Il ne reconnaît pas un symbole d'élément, c'est vous qui choisissez ;
un caractère vaut un symbole (deux caractères valent deux symboles même NA,CL...)
car les minuscules ne passent passe pas dans une 82stat.

-Le programme est assez efficace mais je n'ai pas su discerner ses limites de calcul et les limites de l'utile.

-le petit "e" de l'exponentielle sert d'électron
-le moins "-" de négatif sert pour les anions
-la petite croix "+" dans le catalogue (ET PAS L'ADDITION) sert pour les cations (personnellement je l'ai remplacé par le point "." de décimal, c'est plus accessible
Soyez cohérent entre votre syntaxe et cette ligne : inString("e-+",sub(Str3,R,1)->F)
surtout pour la croix.
EDIT : dans le code j'ai remplacé par un dièze # pour être clair.

-ATTENTION les charges sont traîtées comme des éléments. Donc le signe et le chiffre sont inversés

- des parenthèses de composés complexes sont supportées, mais pas imbriquées

exemples :

sur papier : CuSO4 + NaOH --> Na2SO4+ Cu(OH)2
dans calto : CSO4+NOH=NSO4+C(OH)2
La solution est {1,2,1,1} : CuSO4 + 2*NaOH --> Na2SO4+ Cu(OH)2

papier : Na+ + SO4 2- --> Na2SO4
calto : N+ + SO4-2 = NSO4
solution : {2,1,1} 2*Na+ + SO4 2- --> Na2SO4


Code
Normal
Float
Input "EQ:",Str1
DelVar [A]
{1,2}->dim([A])
{1,2}->L1
Str1+"+"->Str1
length(Str1)->U
inString(Str1,"=")->Z
" "->Str2
1->T
1->V
1->P
0->H
0->A
0->W
Lbl 1
A+1->A
{L1(1),L1(2)+1}->dim([A])
dim([A])->L1
inString(Str1,"+",V)->S
If S>Z and P=1
Then
0->P
Z->S
End
If V=Z+1
-1->T
sub(Str1,V,S-V+1)->Str3
1->K
0->M
1->R
Lbl 2
inString(Str3,"("->I
inString(Str3,")"->J
If R=I
Then
J->R
Goto I
End
If R=J
1->K
If R=J
R+M->R
If R+W=S
Goto K
Lbl J
inString("e-#",sub(Str3,R,1)->F  // EDIT: remplacez # par ce que vous voulez
       // tant que ce n'est pas la somme ou un chiffre ni une lettre de chimie
If not(inString(Str2,sub(Str3,R,1))) and not(F) or F and not(H)
Then
{L1(1)+1,L1(2)}->dim([A])
dim([A])->L1
Str2+sub(Str3,R,1)->Str2
End
inString(Str2,sub(Str3,R,1))-1->X
If H and F
H->X
If not(H) and F
X->H
1->G
If F=3
-1->G
Lbl I
1->Q
While inString("0123456789",sub(Str3,R+Q,1))
Q+1->Q
End
If Qø1   // Q différent de 1
expr(sub(Str3,R+1,Q-1))->N
If Q=1
1->N
If R=J
Then
Q->M
N->K
I+1->R
Goto J
End
Q-1+R->R
[A](X,A)+TNGK->[A](X,A)
Lbl K
IS>(R,S-V
Goto 2
S-1->W
S+1->V
IS>(W,U-1
Goto 1
{L1(1)-1,L1(2)-1}->dim([A])
dim([A])->L1
If L1(1)>L1(2) or L1(2)>L1(1)+2
Then
Disp "TROP COMPLEXE"
Stop
End
rref([A])->[B]
{L1(2)-2,L1(2)}->dim([B])
dim([B])->L1
L1(1)->Y
L1(2)->X
ClrList L1,L2
For(W,1,Y
[B](W,X-1)->L2(W)
End
0->D
Repeat prod(iPart(round(L1,9))=round(L1,9))
D+1->D
Dabs(L2)->L1
End
D->L1(Y+1)
If prod(L1)=0
Disp "IMPOSSIBLE ?"
Pause L1
ClrList L1,L2



----------------------
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 : 3391
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Jeu 03 Fév 2011, 1:57   Citer 

Et du coups pour l'exemple de la précipitation du carbonate de calcium ça va donner quoi puisque la réaction est:
Ca2+ + 2 HCO3- <=> CaCO3 + CO2 + H2O

Ton programme va donc compter les Ca et C de la même façon!

Sangohan38

----------------------
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 03 Fév 2011, 18:43   Citer 

Exact, l'utilisateur doit faire abstraction d'un des C, et le remplacer par un autre symbole.

Ce serait intéressant de l'adapter aux 83+ pour avoir les minuscules.

----------------------
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 : 3391
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Jeu 03 Fév 2011, 20:32   Citer 

Et si on indiquait le nombre d'atome de chaque type, la calculatrice pourrait les différencier.

Par exemple sur la réaction que j'ai marquée, cela donnerais:
Ca1 2+ + 2 H1C1O1 3- <=> Ca1C1O3 + C1O2 + H2O

Certes c'est lourd, mais je ne vois pas trop comment faire autrement sur 82 Stats.

Sangohan38

----------------------
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 03 Fév 2011, 22:52   Citer 

Tu veux dire insister sur les indices à 1 ? C'est une idée... bigmouth.gif
Mais perso je préfère changer de symbole

====
Je me souviens d'un truc que j'avais oublié depuis la conception : les charges des ions sont interprétées comme des atômes ! D'où une inversion du signe et de la valeur.
Je l'ajoûte dans mon premier post, avec un exemple.

----------------------
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 
 
gigi38901
Invité
Posté le : Mer 15 Mai 2013, 19:59   Citer 

J'ai rentré tout ton programme à la main mais il ne marche pas ! La calculatrice m'indique que l'erreur vient de la ligne "IS>(R,S-V" mais pourtant j'ai recopié exactement ce que tu as mit ! Helpp ! cry.gif

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 15 Mai 2013, 21:36   Citer 

"IS>(" est une fonction du menu prgm.
"=" se trouve dans le menu 2nde+math.

La saisie des équations est délicate. Voici deux exemples.
CH4+O2=CO2+H2O
HO-+H3O#=H2O
Bien remplacer le "-" de cet exemple par le même caractère que le "-" de la ligne inString("e-+",sub(Str3,R,1)->F et remplacer "#" par le "+", sachant qu'il est différent de celui de somme chimique.

Dis si ce n'est toujours pas réglé.

----------------------
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 
 
Gigi38901
Invité
Posté le : Mer 15 Mai 2013, 22:14   Citer 

Merci pour ta reponse, je n'avais pas repéré la fonction IS>( (haha excuse mon amateurisme). Mais maintenant ce qui pose probleme, ce sont les resultats obtenus. Pour CH4+O2=CO2+H2O j'obtiens "Trop complexe" alors que le résultat évident est {1 2 1 2} et pour la deuxieme j'obtiens {1 2 2}, ce qui n'est pas le bonne réponse sad.gif

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 15 Mai 2013, 23:14   Citer 

S'il te plait indique moi le contenu de la matrice [A], de L1, de Str1 et Str2.
Pour le premier exemple ce doit être
[A]=[[1,0,-1,0,0] [4,0,0,-2,0] [0,2,-2,-1,0]]
L1={3,5}
Str1= ton équation suivie d'un signe de somme "+" mais je veux vérifier ta syntaxe : CH4+CO2=CO2+H2O+
Str2= " CHO"

Je ne sais pas encore ce qui cause l'erreur.

----------------------
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 
 
Gigi38901
Invité
Posté le : Mer 15 Mai 2013, 23:25   Citer 

J'ai résolu le probleme, j'avais simplement ajouté un indice + à str1. Mais maintenant ça me fait impossible et l'erreur vient de "sous-chaine(chaine1,V,S-V+1)->chaine3". Je suis perdu ..

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 15 Mai 2013, 23:40   Citer 

Le programme n'affiche pas impossible si elle plante à "sous-chaine(chaine1,V,S-V+1)->chaine3". crazy.gif
Soit plus clair : est-ce toi qui détermine une erreur sans plantage à partir de là ?
Indique moi les variables que je t'ai demandé précédemment s'il te plait.

Si cela peut t'aider, sâche que la majorité du programme sert seulement à créer une matrice représentant un système d'équation.
Ensuite il reste à utiliser la fonction rref() pour simplifier le système puis mettre en fraction l'avant dernière colonne puis la multiplier pour éliminer tous les dénominateurs et enfin lire ce résultat de haut en bas pour les coefficients de gauche à droite.

>>>> tout ça pour dire que si tu comprends le système d'équation, tu pourras l'élaborer seul et utiliser la TI pour résoudre.

----------------------
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 
 
Gigi38901
Invité
Posté le : Mer 15 Mai 2013, 23:57   Citer 

Finalement j'avais bon. Alors oublie mon dernier message. Pour le premier exemple j'ai :
[A] [[2 -1 0] [1 -1 0] [1 -1 0] [1 -2 0]]
L1 {4 3}
Str1 CH4+CO2=CO2+H2O+
Str2 CH+O

  Haut de page Bas de page 
 
Gigi38901
Invité
Posté le : Jeu 16 Mai 2013, 18:54   Citer 

Alors, as tu detecté le probleme ?

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 16 Mai 2013, 20:05   Citer 

Quand tu me dis Str1=CH4+CO2=CO2+H2O+, est-ce une erreur de saisie sur ta calculatrice ou d'une erreur de saisie sur le forum ?
En effet le premier CO2 devrait être O2.

Il semble que les "+" soient interprétés comme des éléments par ta calculatrice, d'après Str2.
Je ne sais pas d'où ça vient exactement.

POSSIBILITE 1 : tu dois avoir mal saisi
inString("e-+",sub(Str3,R,1)->F
alors que j'ai rappelé plusieurs fois que sur calculatrice il faut remplacer ce + par un autre caractère, et j'ai proposé la minuscule croix du catalogue.
inString("e-#",sub(Str3,R,1)->F conviendra en remplaçant # par ce qu'on veut autre que la somme, les lettres, les chiffres.

Possibilité 2 : Un des calculs de S

Possibilité 3 : simplement l'instruction de stockage d'élément.

autre...

Je cherche encore et compare mes données au code posté.

----------------------
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 
 
Gigi38901
Invité
Posté le : Jeu 16 Mai 2013, 20:52   Citer 

C'était une erreur de saisie sur le forum. Et j'avais mis le mini + du catalogue et bon ps le + de la somme. Donc ce n'est pas la premiere possibilité

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 16 Mai 2013, 21:02   Citer 

Il semble que les indices ne soient pas reconus. Ils représentent toujours 1.
Je ne sais pas pourquoi.

En rassemblant l'erreur du symbole somme comme élément et l'erreur d'indice ET LE CO2, j'obtiens théoriquement les résultats que tu as indiqué. crazy.gif

Je remarque à l'instant un caractère spécial que je n'avais jamais signalé ni converti.
If Qø1
Vérifie que tu as utilisé le symbole de différence. Tu peux aussi utiliser une soustraction. Q-1

----------------------
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 
 
Gigi38901
Invité
Posté le : Ven 17 Mai 2013, 7:00   Citer 

J'avais déjà utilisé le symbole =/= !

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 19 Mai 2013, 17:49   Citer 

Je n'ai aucune idée de la cause du bug.
Le programme fonctionne pour moi et je ne trouve pas de différence entre mon message et mes données.

----------------------
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 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2016 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink
 

Site hébergé par Free Page sous licence creative commons Page validée par le W3C (XHTML 1.0 Transitional) Feuille de style validée par le W3C Flux RSS 2.0 valide Page étiquetée par l'ICRA Page testée par Ocawa