Curriculum and Labs for Engineering Education

cancel
Showing results for 
Search instead for 
Did you mean: 

Challenge mathématiques #19 : CORDIC, l’algorithme trigonométrique des calculatrices

CORDIC-illustration.png calculette.jpg

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 :

  • Calculer les valeur de sin(beta) et cos(beta) sans palette LabVIEW de trigonométrie
  • Utilisez le VI fourni et le résultat doit être juste au minimum à 6 chiffres après la virgule.
  • Les constantes doivent être dans le diagramme en dur (pour simuler la table mémoire)
  • Les valeurs de Beta se limiteront de 0 à Pi/2
  • Nombre d’itérations libre
  • Pas de formula node
  • Retourner le code CORDIC_Mon pseudo.vi à emmanuel.roset@ni.com et placer au minimum un petit message « un code envoyé » pour être sur de ne pas manquer la réception d’un code.
  • Fin du défi le 30 novembre.

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é !

Image1.jpg

Emmanuel

Download All
Comments
adcpc
Member
Member
on

Deux questions :

- Nombre d'itérations maximum (pour limiter la taille de la table mémoire) ?

- Formula node autorisé ?

emmanuel-fr
Member
Member
on

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.

emmanuel-fr
Member
Member
on

ndragoe,

je suis content d'avoir recu votre code qui fonctionne bien !

A priori il fonctionne également pour des valeurs jusqu'à Pi/2

TDDL
Member
Member
on

Code envoyé!

Bilsix
NI Employee (retired)
on

Cordic_Bilsix.vi, première tentative !

Bilsix.
Nico_EMC
Member
Member
on

Code envoyé.

Cisco
Active Participant
Active Participant
on

Code envoyé!

Francis M
emmanuel-fr
Member
Member
on

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

Bilsix
NI Employee (retired)
on

Bonjour Emmanuel,

As-tu pris en compte le code de nitad54448 ?
Il/Elle a posté un commentaire ici:

https://decibel.ni.com/content/blogs/labview-news-french/2014/11/04/challenge-math%C3%A9matiques-19-...

C'est pas que j'aime avoir beaucoup de challengers, disons plutôt c'est mon côté fair-play qui prend le dessus...

Bilsix.
emmanuel-fr
Member
Member
on

Merci pour votre Fair play, je n'ai pas reçu de code de ce challenger...

emmanuel-fr
Member
Member
on

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 !

emmanuel-fr
Member
Member
on

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

emmanuel-fr
Member
Member
on

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

emmanuel-fr
Member
Member
on

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

emmanuel-fr
Member
Member
on

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 !

Contributors