| 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
|
|
|
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.
|
 |
|
| |
Sangohan38
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Lun 16 Avr 2012, 9:12
|
|
|
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
|
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Lun 16 Avr 2012, 13:51
|
|
|
Ça c'est de l'amélioration ... 
---------------------- 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 ... |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Lun 16 Avr 2012, 14:24
|
|
|
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 |
 |
|
| |
Sangohan38
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Lun 16 Avr 2012, 20:13
|
|
|
Justement en anglais il me semble qu'il vaut mieux utiliser iPart car int arrondis au supérieur.
Sangohan38
|
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Lun 16 Avr 2012, 22:18
|
|
|
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 |
 |
|
| |
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
|
|
|
Bonjour à tous,
Désolé ça fait un petit moment que je ne me suis pas connecté mais je voudrais tous vous remercier!!! .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.
|
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mar 08 Mai 2012, 19:03
|
|
|
| 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 |
 |
|
| |
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
|
|
|
Encore une fois merci pour ce cours très complet!!
|
 |
|
| |