Vous êtes vous déjà posé la question de savoir comment votre calculatrice scientifique faisait des calculs de trigonométrie ?
Avec autant de chiffres après la virgule ? C’est magique et nous l’utilisons tout le temps sans savoir comment elle fonctionne.
Pourtant, il a fallu trouver un algorithme mathématique simple pour que des microcontrôleurs en virgule fixe puissent les intégrer !
Le défi ce mois-ci est de recréer quelques fonctions trigonométriques avec LabVIEW sans utiliser la palette « Fonctions trigonométriques »
En utilisant des constantes et en reproduisant l’algorithme CORDIC.
(COordinate Rotation DIgital Computer : « calcul numérique par rotation de coordonnées »).
Règles :
Le gagnant aura la possibilité de passer une certification LabVIEW gratuite de son choix.
Résulats pour le challenge de novembre : Cisco est le gagnant !
Ci dessous la publication des codes des différents participants, et le diagramme du code de Cisco
Beaucoup d'efforts a été fait sur les commentaires des codes ce qui est super pour la communauté !
Emmanuel
Deux questions :
- Nombre d'itérations maximum (pour limiter la taille de la table mémoire) ?
- Formula node autorisé ?
Merci pour ces bonnes questions.
- Le nombre d'itérations peut devenir prohibitif dans le cas d'une aproximation angulaire de grande résolution. J'ai proposé d'avoir pour objectif une précision angulaire de 6 chiffres après la virgule. Les tables résultantes peuvent être précalculées dans un grand tableau de constantes si besoin. il n'y a pas de limite mémoire imposée ici.
- Pour le formula node, je ne l'ai pas précisé dans ce défi mais effectivement. Il est plus intéressant de travailler avec les fonctions artithmétiques de LabVIEW afin d'exploiter la structure du langage dans un objectif de partage d'astuces de codage. Donc pas de formula node.
ndragoe,
je suis content d'avoir recu votre code qui fonctionne bien !
A priori il fonctionne également pour des valeurs jusqu'à Pi/2
Code envoyé!
Cordic_Bilsix.vi, première tentative !
Code envoyé.
Code envoyé!
1 - cordic_version3_ndragoe.vi |
2 - CORDIC_TDDL.vi |
3 - CORDIC_Bilsix.vi |
4 - CORDIC_NicoEMC |
5 - CORDIC_cisco.vi |
Voici le tableau des codes reçus jusqu'à présent. Dites moi si il manque quelqu'un.
Merci déjà, reste plus que quelques jours
Bonjour Emmanuel,
As-tu pris en compte le code de nitad54448 ?
Il/Elle a posté un commentaire ici:
C'est pas que j'aime avoir beaucoup de challengers, disons plutôt c'est mon côté fair-play qui prend le dessus...
Merci pour votre Fair play, je n'ai pas reçu de code de ce challenger...
Le tirage au sort du gagnant se fera ce soir lundi 1er en se basant sur le Super Loto.
Il y a 5 (+1 potentiel) participant. Donc le premier chiffre dans l'ordre de sortie qui sera compris entre 1 et 6 sera désigné gangant.
Si je ne recoit pas le code de la 6 eme personne qui a posté sur le blog d'ici le tirage (et que son code est validé), on se limitera au premier chiffre de 1 à 5.
Si le tirage ne sort aucun chiffre de 1 à 6, on attend le prochain tirage du loto !!
Bref, il va falloir bientôt un algorithme LV pour tout ça !
Bonjour en ce 2 decembre.
Bon, le résultat du loto n'a pas permi de départager les finalistes -->
43 49 40 48 44 8
Donc on attend le tirage de demain soir...
Sinon, il n'y a que 5 finalistes car ndragoe et nitad54448 ne font qu'une seule personne
Bon eh bien pas de chance, le Loto de mercredi n'a toujours pas sorti de chiffres entre 1 et 5 même sur le complémentaire, prochain samedi dans 2 jours. Si toujours pas alors, nous aviserons avec une autre méthode sinon nous arriverons à noel sans gagnant !
Il faut plus de participants
OK !! malchance encore, donc méthode radicale, les mathématiques...
Donc prochain tirage ce soir lundi 8. Il y a cinq candidats et un numéro complémentaire le jusqu'à 10
donc on double les chiffres gagnants :
1 ou 6 c'est le 1
2 ou 7 c'est le 2
3 ou 8 etc..
4 ou 9
5 ou 10
Résultat du lundi 8 :
10 14 32 43 47 10
définitivement c'est le 10 donc le 5eme soit CORDIC_cisco.vi
Bravo à Cisco un habitué des défis !