Programme sur la mesure principal
aurel94
Messages postés
73
Date d'inscription
Statut
Membre
Dernière intervention
-
Incognito -
Incognito -
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)
A voir également:
- Programme sur la mesure principal
- Mesure avec telephone - Guide
- Programme demarrage windows - Guide
- Forcer la fermeture d'un programme - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
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
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) :
Ç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.
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.
Non c mon prof qui me le demande pour un DM je sais calculer sa facilement a la main :)
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 :) )
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
aprés bien sur on pourrais laisser sous la forme 7/3?- 2? et la travail de plus pour l'utilisateur
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.