Poster un nouveau sujet Poster une réponse
Programme: Mesure principale
Auteur Message
S.E.M-973



Autorisation : Membre
Nb de messages : 3
Inscrit le : Sam 07 Avr 2012, 18:51
Posté le : Lun 16 Avr 2012, 2:25   Citer 

Salut à tous,
Je vous présente mon premier algo. Il vous donne la mesure principale en pi radian d'un angle si X<(-Pi)ou X> Pi sous la forme:A (mesure principale)*Pi+k*2Pi.


Code
ClrHome
Prompt X
0->K
If X>= Pi
Then
While X>Pi
X-2*Pi->X
K+1->K
End
Goto 1
Else
While X<(-Pi)
X+2*Pi->X
K+1->K
End
Goto 1
Lbl 1
X/Pi->X
2*K->k
Disp "X="
Disp X>Frac
Disp "*Pi"
Disp "+"
Disp K
Disp "*Pi"



Ps:Je cherche toujours à l'améliorer donc n'hésiter pas à donner des suggestions.

 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 : Lun 16 Avr 2012, 9:12   Citer 

Tu peux grandement raccourcir le programme en appliquant une simple division:


Code
ClrHome
Input "MESURE (RADIAN):",X
X/2/pi
Disp iPart(Ans),"*2*pi+",fPart(Ans



Sangohan38

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Lun 16 Avr 2012, 13:51   Citer 

Ça c'est de l'amélioration ... godgrace.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 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 : Lun 16 Avr 2012, 14:24   Citer 

La difficulté vient lorsqu'on veut la mesure principale dans ]-pi,pi].
Par exemple 4Pi/3=2Pi-2Pi/3
Ce programme règle le problème.
Code
Prompt A
int(A/Pi/2 -> Q
A/Pi-2Q -> R
If R>1
Then
R-2 -> R
Q+1 -> Q
End
Disp "A=2*K*Pi+R*Pi
Disp "K=",Q,"R=",R>Frac

Remarque : il faut absoluement utiliser int en anglais ou partEnt en français.

Ceci est proche du programme original de ce sujet.
Code
Prompt X
X/Pi->C
1->B
If C<=-1
-1->B
0->A
While C>1 or C<=-1
A+B->A
C-2B->C
End
Disp "X=2*K*Pi+R*Pi
Disp "K=",A,"R=",C



----------------------
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 : Lun 16 Avr 2012, 20:13   Citer 

Justement en anglais il me semble qu'il vaut mieux utiliser iPart car int arrondis au supérieur.

Sangohan38

 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 : Lun 16 Avr 2012, 22:18   Citer 

int est un arrondit à l'inférieur.
iPart est une troncature.
iPart(-2.3)=-2
int(-2.3)=-3
ent(-2.3)=-2
partEnt(-2.3)=-3

Utiliser int/partEnt permet d'effectuer une division euclidienne avec le reste toujours positif.
Ainsi il suffit d'un test "R>1" pour adapter les résultats qui sont dans ]-2,-1]U]1,2[.

Avec mon programme :
10/3=2+4/3=4-2/3
-10/3=-4+2/3
Avec iPart :
10/3=2+4/3
-10/3=-2-4/3

On voit que les cas de figure sont plus difficiles à traiter lorsqu'on utilise iPart.

----------------------
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 
 
S.E.M-973



Autorisation : Membre
Nb de messages : 3
Inscrit le : Sam 07 Avr 2012, 18:51
Posté le : Mar 08 Mai 2012, 16:00   Citer 

Bonjour à tous,
Désolé ça fait un petit moment que je ne me suis pas connecté mais je voudrais tous vous remercier!!! minied.gif minied.gif .Par contre je penses qu'il y a une erreur sur le programme de sangohan38(peut être une erreur d'écriture) et c'est sans doute pour ça que les autres ont repris.Et je voudrais savoir aussi quelle méthode (en math) linkako a utilisé pour trouver la mesure principale.

 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 : Mar 08 Mai 2012, 19:03   Citer 


Citer : S.E.M-973
Par contre je penses qu'il y a une erreur sur le programme de sangohan38(peut être une erreur d'écriture) et c'est sans doute pour ça que les autres ont repris.

En effet le code de sangohan38 contient une erreur de calcul.

Citer : S.E.M-973
Et je voudrais savoir aussi quelle méthode (en math) linkako a utilisé pour trouver la mesure principale.

Les méthodes de décomposition sont très similaires.
Le but est d'effectuer une division pour séparer "2*Q*Pi" et "R*Pi".
Mais parler de division ne suffit pas car il y a plusieurs méthodes, qui ne donnent pas toujours la mesure principale mais une valeur à 2*Pi près.

J'expliquerai ci-après :
-la forme de la décomposition
-l'erreur de sangohan38
-comment gérer de manière fine les divisions

====================

ATTENTION : Les notations suivantes ne correspondent pas à celles de mon programme.
Code
Adoptons les notations suivantes :
X=P*2Pi
 =(Q+A)*2Pi   // ce que trouve en réalité sangohan38 avec (Q,A)
 =Q*2*Pi+B*Pi // ce que nous cherchons avec (Q,B)
 =P*2*Pi+R    // ce que VOULAIT sangohan38

En réalité, sangohan38 affiche (P,A) quand il voulait (P,R).
Enfin il affiche ""X~~P*2*Pi+A"" ce qui est faux.

Nous pouvons aussi écrire
R=B*Pi=A*2*Pi
P=2*Q

Pour corriger le programme de sangohan38 sur ce point, il faut écrire

Code
ClrHome
Input "MESURE (RADIAN):",X
X/2/pi
Disp iPart(Ans),"*2Pi+"
Disp 2Pi*fPart(Ans>Frac   //cette ligne a été corrigée avec un "2Pi" et ">Frac"
// "2Pi" est indispensable
// >Frac est un bonus pour afficher une fraction
//libre à vous d'utiliser un seul Disp, moi j'ai juste été plus clair avec deux
//Ce serait encore mieux d'afficher P*2Pi+B*Pi (vous savez maintenant le faire)


========
Pour se simplifier la vie plus tard, notons Y=X/Pi.

Code
Calculer le quotient :
iPart(Y/2)  // tronqué
int(Y/2)    // réduit à l'inférieur

Calculer le reste :
2*fPart(Y/2)    // entre -2 et 2 // le quotient doit être iPart pour l'utiliser
Y-2*iPart(Y/2)  // entre -2 et 2
Y-2*int(Y/2)    // entre 0 et 2 (positif !)


Code
cas 1 : int et Y-2*Pi*int
cas 2 : iPart et Y-2*iPart

Je préciserai ci-après les cas particuliers, les cas communs ne seront pas réécrit dans les trois collonnes.

ex   | cas1     | cas2     | objectif  | le cas faux
4    = 2*2+0
3.5  = 1*2+1.5  = 1*2+1.5  = 2*2-0.5   |12
3    = 1*2+1
2.5  = 1*2+0.5
2    = 1*2+0
1.5  = 0*2+1.5  = 0*2+1.5  = 1*2-0.5   |12
1    = 0*2+1
0.5  = 0*2+0.5
0
-0.5 = -1*2+1.5 = 0*2-0.5  = 0*2-0.5   |1
-1   = -1*2+1   = 0*2-1    = -1*2+1    | 2
-1.5 = -1*2+0.5 = 0*2-1.5  = -1*2+0.5  | 2
-2   = -1*2+0
-2.5 = -2*2+1.5 = -1*2-.5  = -1*2-.5   |1
-3   = -2*2+1   = -1*2-1   = -2*2+1    | 2
-3.5 = -2*2+0.5 = -1*2-1.5 = -2*2+0.5  | 2
-4   = -2*2+0

Une division avec int est fausse uniquement lorsque son reste est suppérieur à 1.
Une division avec iPart est fausse bien plus souvent.

En tenant compte de cette remarque, il suffit de diminuer le reste et d'augmenter le quotient lorsque le reste par int est suppérieur à 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 
 
S.E.M-973



Autorisation : Membre
Nb de messages : 3
Inscrit le : Sam 07 Avr 2012, 18:51
Posté le : Mar 08 Mai 2012, 22:45   Citer 

Encore une fois merci pour ce cours très complet!!

 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