| bizarerie avec cos sin tan() | |
|
|
Auteur | Message |
---|
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: bizarerie avec cos sin tan() Jeu 1 Sep 2016 - 9:07 | |
| bjr jack j’interviens ici pour les calculs de trigonométrie pour les valeurs de cos sin et les autres avec degrees j'ai des mauvaises valeurs dans cos(90), sin(90) et tan(90) normalement la cote cos(90) est égal à 0 alors que panoramic donne comme résulta -1.355........ sin(180) =0 résulta de panoramic -2.710......... cos(270) me donne 1.897...... au lieu de 0 et tan(90) est néant et il me donne -7.378........ - Code:
-
degrees print cos(90) print sin(90) print tan(90) print cos(180) print sin(180) print tan(180) print cos(270) print sin(270) print tan(270) | |
|
| |
Jack Admin
Nombre de messages : 2381 Date d'inscription : 28/05/2007
| Sujet: Re: bizarerie avec cos sin tan() Jeu 1 Sep 2016 - 11:59 | |
| Je ne vois pas de problème. Je viens d'essayer (sur un MAC, car je n'ai pas de PC sous la main) et j'obtiens:
pour cos(90) : -1.3552527...E-19 ce qui veut dire: -0,000000000000000000013552527... ce qui est pratiquement égal à 0 On peut par contre s'interroger sur le signe de cette valeur
pour sin(90) : 1 ce qui est la bonne valeur
pour tan(90) : -7.378697...E18 ce qui veut dire : -7378697000000000000 , ce qui vaut pratiquement - infini, le signe - au lieu d'un signe + est du au cosinus qui est très légèrement négatif
pour cos(180) : -1, qui est la bonne valeur
etc, etc,
Je pourrais introduire un traitement particulier pour ces valeurs aux limites : qu'on obtienne pile la valeur 0 (au lieu de + ou - epsilon) ou qu'il y ait erreur si + ou - infini _________________ username : panoramic@jack-panoramic password : panoramic123 | |
|
| |
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: bizarerie avec cos sin tan() Jeu 1 Sep 2016 - 12:23 | |
| bjr jack ok mais dans mon programme de trigo il y a une mauvaise indication pour la cotation des entraxes vois ci-desouus et c'est pour cela que j'interviens merci jack | |
|
| |
silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: bizarerie avec cos sin tan() Jeu 1 Sep 2016 - 15:00 | |
| @pascal10000 essaye d'arrondir tes valeurs: - Code:
-
dim mon_nombre
degrees mon_nombre=cos(90)
print mon_nombre
round_float(adr(mon_nombre),4)
print print mon_nombre
END ' sub round_float(adr_source%,decimales%) dim_local tmp%,float,adr_destination% ' lit le contenu de la variable utilisateur à partir de son adresse, et écrit le dans dans la variable temporaire 'float' adr_destination%=adr(float) poke adr_destination%,peek(adr_source%) poke adr_destination%+1,peek(adr_source%+1) poke adr_destination%+2,peek(adr_source%+2) poke adr_destination%+3,peek(adr_source%+3) poke adr_destination%+4,peek(adr_source%+4) poke adr_destination%+5,peek(adr_source%+5) poke adr_destination%+6,peek(adr_source%+6) poke adr_destination%+7,peek(adr_source%+7) ' arrondi 'float' tmp%=float*power(10,decimales%) float=tmp%/(power(10,decimales%)) ' écrit la variable arrondi 'float' dans la variable utilisateur poke adr_source%,peek(adr(float)) poke adr_source%+1,peek(adr(float)+1) poke adr_source%+2,peek(adr(float)+2) poke adr_source%+3,peek(adr(float)+3) poke adr_source%+4,peek(adr(float)+4) poke adr_source%+5,peek(adr(float)+5) poke adr_source%+6,peek(adr(float)+6) poke adr_source%+7,peek(adr(float)+7) end_sub
EDIT : PEEK ET POKE A EVITER, RESULTAT PARFOIS ALEATOIRE !!!
Dernière édition par silverman le Mar 13 Sep 2016 - 19:59, édité 1 fois | |
|
| |
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: bizarerie avec cos sin tan() Jeu 1 Sep 2016 - 15:56 | |
| bjr silverman merci pour ton aide mais en attendant j'ai adopté ce code qui est plus direct
if angleB=0 sinu=0:csinu=1 end_if if angleB=90 sinu=1:csinu=0 end_if if angleB=180 sinu=0:csinu=-1 end_if if angleB=270 sinu=-1:csinu=0 end_if
il faut aussi l'adapter avec la tangente | |
|
| |
JL35
Nombre de messages : 7089 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: bizarerie avec cos sin tan() Jeu 1 Sep 2016 - 17:06 | |
| @ silverman (& pascal10000), pour avoir un arrondi à 4 décimales (modulable), pourquoi ne pas faire tout simplement: - Code:
-
DIM v,i% DEGREES v = COS(90) i% = v*10000 v = i%/10000 PRINT str$(v) ? Ou sous forme de sub, par exemple: - Code:
-
DIM v,i%,nd%,ang,var height 0,700 DEGREES FOR ang = 70 TO 110 v = COS(ang) Arrondi(v,4): PRINT STR$(ang)+"°: "+STR$(var) NEXT ang END
SUB Arrondi(valeur,nd%) ' arrondi de la valeur 'valeur' à nd% décimales maxi -> var DIM_LOCAL i%,fact% fact% = POWER(10,nd%) i% = valeur*fact% var = i%/fact% END_SUB | |
|
| |
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: bizarerie avec cos sin tan() Jeu 1 Sep 2016 - 18:28 | |
| voici le résulta avec mon code | |
|
| |
mindstorm
Nombre de messages : 684 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: bizarerie avec cos sin tan() Jeu 1 Sep 2016 - 19:22 | |
| bonjour Pascal 10000 Sans vouloir intervenir magistralement et même si ton affichage semble juste, il ne traduit pas la réalité du calcul. Tu agis de cette manière car tu connais déjà le résultat. Si tu avais a traiter une fonction inconnue tu ne pourrais pas le faire. Attention au raccourcis qui peuvent cacher une erreur! Maintenant merci pour ton programme.
| |
|
| |
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: bizarerie avec cos sin tan() Jeu 1 Sep 2016 - 19:54 | |
| bonjour mindstorm
Oui il est vrai que c'est un domaine que je connais un peut puisque je suis tourneur fraiseur. J'y fait attention aux raccourcis! t’inquiète pas | |
|
| |
silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: bizarerie avec cos sin tan() Ven 2 Sep 2016 - 11:11 | |
| @JL35
ma sub convertit de la même manière que la tienne, mais réécrit la valeur arrondi dans la variable d'origine, d'ou l'utilisation des peek/pooke. J'ai émulé une fonction, c'est comme si on faisait: mon_nombre=round_float(mon_nombre,4)
EDIT : PEEK ET POKE A EVITER, RESULTAT PARFOIS ALEATOIRE !!!
Dernière édition par silverman le Mar 13 Sep 2016 - 19:58, édité 1 fois | |
|
| |
JL35
Nombre de messages : 7089 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: bizarerie avec cos sin tan() Ven 2 Sep 2016 - 13:45 | |
| C'est sans doute plus élégant, mais bien plus coûteux en nombre de lignes pour un résultat équivalent. | |
|
| |
Contenu sponsorisé
| Sujet: Re: bizarerie avec cos sin tan() | |
| |
|
| |
| bizarerie avec cos sin tan() | |
|