IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Arc-tangentes, Taylor et les lang. de prog.


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut Arc-tangentes, Taylor et les lang. de prog.
    Bonjour,

    Je voudrais savoir quelle est généralement la méthode utilisée pour le calcul d'arc-tangentes (généralement nommée atan) dans les différentes librairies mathématiques standart (c, c++, c#, java, etc).

    Je suppose que c'est un développement en série de Taylor, non ?

    Si tel est le cas quelle est la précision utilisée en général ?

    D'autre part, est-ce que ça vaut la peine de se faire sa propre méthode de développement en série de Taylor (dans le cas d'applications temps-réel) pour pouvoir gérer soi-même la précision (et donc la rapidité d'exécution) ou est-ce que le fameux atan est vraiment optimisé ?

    (A noter que je ne veux pas utiliser de tables pré-calculées )

    Merci.

    Flo.

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Les bibliothèques externes mathématiques sont trés performantes et permettent une grande précision par rapport aux implémentations standard.
    (A noter que je ne veux pas utiliser de tables pré-calculées )
    La méta-programmation est un bon compromis alors.

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Flo.
    Je voudrais savoir quelle est généralement la méthode utilisée pour le calcul d'arc-tangentes (généralement nommée atan) dans les différentes librairies mathématiques standart (c, c++, c#, java, etc).
    Les trois techniques que je connais sont:
    - utilisation d'une instruction du processeur,
    - utilisation de CORDIC,
    - décomposition en sous domaine et utilisation de polynomes convenablement choisis dans chacun de ces sous-domaines; parfois il s'agit de développement en série, parfois ils sont choisis autrement.
    - tables et interpolation (c'est un cas particulier du précédent).

    Si tel est le cas quelle est la précision utilisée en général ?
    Normalement moins d'1ULP, arriver à 1/2ULP (comme on fait pour des opérations plus simples) est quasiment impossible avec les fonctions transcendantes.

    D'autre part, est-ce que ça vaut la peine de se faire sa propre méthode de développement en série de Taylor (dans le cas d'applications temps-réel) pour pouvoir gérer soi-même la précision (et donc la rapidité d'exécution) ou est-ce que le fameux atan est vraiment optimisé ?
    Si ton objectif est un compromis rapidité/précision, il est possible que tu puisses optenir un qui te convient le mieux. Le seul moyen de savoir est de mesurer.

  4. #4
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    Salut,

    merci pour vos réponses.

    - utilisation d'une instruction du processeur,
    oui mais la question tient toujours (même au niveau du processeur) ... ... le résultat ne leur tombe pas du ciel !!!

    OK pour CORDIC. Je connaissais pas. Merci.

    Que représente 1 ULP ?

    Merci.

    Flo.

    Edit: pour CORDIC, j'ai lu cet article :

    http://orochoir.club.fr/Maths/cordic.htm

    Ils disent que c'est pour les fonctions trigonométriques, mauis est-ce que cela marche également pour les fonctions réciproques ?

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Flo.
    oui mais la question tient toujours (même au niveau du processeur) ... ... le résultat ne leur tombe pas du ciel !!!
    Une des methodes qui suivent.

    Que représente 1 ULP ?
    Units in the Last Place. C'est la mesure classique de la precision. Il faut 1/2ULP pour que le bit le moins significatif soit correct (c'est pas possible de descendre en dessous).

  6. #6
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Personnelement j'avais utilisé des valeurs tabulées et, à partir de la valeur tabulée la plus proche, utilisé le développement de taylor.
    Je me suis toujours limité à 1 developpement du 3eme ordre.
    Les expressions des dérivées de Atan sont triviales à écrire.
    avac une tabulation par pas de 0.1 [ arctan(i/10) ] les erreurs sont de l'ordre de 0.5 à 0.6%

  7. #7
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    [HS]
    Ah lala, Trivial, trivial... Beaucoup de gens utilisent ce mot après avoir fait une prépa...
    En tout cas pour une personne du forum, je sais que j'ai raison
    [/HS]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin d'un exemple de prog utilisant les fichiers
    Par b_steph_2 dans le forum C++
    Réponses: 10
    Dernier message: 25/11/2005, 09h03
  2. Lancer les prog en ligne de commande
    Par meufeu dans le forum Applications et environnements graphiques
    Réponses: 9
    Dernier message: 06/09/2004, 17h13
  3. Réponses: 8
    Dernier message: 17/10/2002, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo