Programme sur la mesure principal

Fermé
aurel94 Messages postés 73 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 1 décembre 2013 - 11 nov. 2010 à 13:31
 Incognito - 12 oct. 2011 à 18:21
Hello tout le monde je suis en 1ere S ;) . Voila mon prof de math m'a demandé de faire un programme qui permettait de trouver la mesure principal d'un angle orienté en trigonométrie. Le probleme c'est que je n'y arrive absolument pas . Est ce que quelqun pourrait m'écrire ce programme ou me trouver l'algorythme je vous en supplit c'est pour un dm :D . (Je suis sur une TI 83)

4 réponses

Héhé, j'avais fait ça récemment sur ma TI83+.

La solution la plus évidente est de faire une boucle "tant que l'angle est > pi, enlever 2pi à l'angle", puis une autre "tant que l'angle est <= - pi, ajouter 2pi".

Enfin ça, c'est valable pour les mesures en radians. J'avais donc perfectionné le programme pour qu'il le fasse en degré si on est en mode degré dans les préférences de la calculatrice, et en radians si on est en mode radian. Pour ça, il y a un menu "Angle" au-dessus de la touche "Apps" (enfin sur TI83+), qui donne accès à 2 symboles :
- le symbole ° : à placer après une mesure d'angle en degré, il indique à la calculatrice de convertir le nombre en radians si on est en mode radian ;
- le symbole r (petit R en exposant) : à placer après une mesure d'angle en radians, il indique à la calculatrice de convertir le nombre en degrés si on est en mode degré (l'inverse de ci-dessus).
Par exemple, "180°" donnera 180 en mode degré, et 2pi en mode radian.
Autre astuce : pour savoir le mode dans lequel on est, on peut tester
cos(90)
qui vaut 0 si on est en degré et une valeur différente de 0 si on est en radian.

Après, il y a une autre solution encore plus simple, que j'ai adopté ensuite ; elle n'a aucun intérêt algorithmique mais elle est bien plus efficace sur la calculatrice et le programme prend moins de place : on a MesPrincX= (+/-) cos-¹(cos(X)), et le signe de MesPrincX est celui de sin(X) (X est l'angle donné et MesPrincX sa mesure principale à calculer).
En gros, voici le code de mon programme (en fait, j'y ai rajouté un truc pour qu'en mode radian on doive entrer 3/2 au lieu de 3pi/2 par exemple) :
: Prompt X  
: (1 -2(sin(X)<0)) cos-¹(cos(X  ->  X  
: X

Ça tient en une seule ligne de calcul grâce aux booléens (l'expression (sin(X)<0) est un nombre que l'on appelle "booléen" : elle prend la valeur 1 si le test est vrai, 0 s'il est faux).

Explications :

|| cos-¹(cos(X)) renvoie la mesure principale de X, mais uniquement sa valeur absolue (en effet, X et -X ont le même cosinus). J'ai enlevé les 2 parenthèses finales pour économiser des octets.
|| (1-2(sin(X)<0)) permet d'avoir la valeur relative (en effet, le sinus d'un angle est du même signe que sa mesure principale).
* Si sin(X)>=0, alors (sin(X)<0)=0 (la condition est fausse donc vaut 0) donc (1-2(sin(X)<0)) = 1 ; on multiplie par 1, donc on garde la valeur positive.
* Si sin(X)<0, alors (sin(X)<0)=1 (la condition est vraie donc vaut 1) donc (1-2(sin(X)<0)) = -1 ; on multiplie par -1, donc on prend la valeur négative.
|| La 3è et dernière ligne affiche la nouvelle valeur de X ; comme "Disp X", mais comme c'est la toute dernière ligne du programme on a le droit de faire ça, ce qui a 2 avantages : économiser des octets et ne pas afficher le "Done" à la fin de l'exécution du programme.
1
En fait, il y a encore plus simple :

Prompt X
(1 -2(sin(X)<0)) cos-¹(cos(X

On économise encore plus d'octets (4 en tout) et on ne modifie pas la variable. C'est basé sur le principe du dernier point de l'explication. Le résultat est juste stocké dans Ans, une variable spéciale qui contient toujours le résultat du dernier calcul effectué. Pour le comportement du programme, c'est donc exactement comme si on avait juste entré et fait le calcul directement depuis l'écran principal.
0
bjour Messages postés 6068 Date d'inscription lundi 11 janvier 2010 Statut Contributeur Dernière intervention 2 mai 2022 4 065
11 nov. 2010 à 13:34
ton prof te demandes de faire ça?
c'est étonnant! n'est-ce pas pluto pour toi pour les tests?



0
aurel94 Messages postés 73 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 1 décembre 2013 1
11 nov. 2010 à 13:53
Non c mon prof qui me le demande pour un DM je sais calculer sa facilement a la main :)
0
bjour Messages postés 6068 Date d'inscription lundi 11 janvier 2010 Statut Contributeur Dernière intervention 2 mai 2022 4 065
11 nov. 2010 à 14:56
alors le tout c'est de traduire tes opérations à la main en opérations à la machine, selon trois phases:

-entrée:
faire entrer les données par l'utilisateur
attirbuer ces valeurs à des variables (A,B,C,D,E...)

-traitement:
phase de calcul


-sortie:
affichage du résultat
0
j'ai r1 dis
0
snoussix Messages postés 427 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 22 juin 2012 558
12 nov. 2010 à 21:42
j'ai ma petite idée sur le sujet ( au fait j'ai trouvé la réponse mais je vouderais juste savoir un truc: est ce que l'utilisateur doit entrer 5(pie) ou tu as le droit de lui dire au lieu de rentrer 5(pie) de ne rentrer que 5 ??? ( sa a son importance dans le prog :) )
0
bjour Messages postés 6068 Date d'inscription lundi 11 janvier 2010 Statut Contributeur Dernière intervention 2 mai 2022 4 065
13 nov. 2010 à 09:46
ça c'est à toi de voir, en fonction de ce que tu calcule...
préciser avec les π permet une plus grande variété de mesures:
genre si tu as 5π + 1/3, tu tapes avec le π et c'est bon. après, à toi de remulitplier apr π pour avoir non pas une valeur, mais un nombre de π
0
snoussix Messages postés 427 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 22 juin 2012 558
13 nov. 2010 à 10:49
non mais tu ne comprends pas mon idée je veux savoir par exemple s'ils ont ce droit ca veut dire que tous leurs angles sont sous la forme x* avc xappartient a R donc l'utilisateur n'aura qu'a rentrer x et pas la peine de ?. Cela permettrait dans mon programme aprés l'utilisation de boucles for ( selon si c'est négatif ou positif ) de trouver un résultat facil sans trop de problémes dans le cas contraires je ne vois pas d'autre solution que de passer aux valeurs approchés puis de revenir au valeur exactes par exemple pour 7/3 mon programme va soustraire 2 et ca lui donnera 0.33333333 ? et ca me géne je pourrais bien sur lui demander d'approcher une fraction ou de ne garder qu'un chiffre aprés la virgule mais ca me géne.
aprés bien sur on pourrais laisser sous la forme 7/3?- 2? et la travail de plus pour l'utilisateur
0
snoussix Messages postés 427 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 22 juin 2012 558
13 nov. 2010 à 10:51
bien sur on pourra trouver une solution trés simple mais bon ... ( je voulais savoir si on pouvait prendre un raccourci
0