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

Mathématiques Discussion :

Implémentation des fonctions mathématiques


Sujet :

Mathématiques

  1. #1
    mat.M
    Invité(e)
    Par défaut Implémentation des fonctions mathématiques
    Excusez mon ignorance , je n'ai pas fait math sup/spé (mathématiques pas maternelle .. ).
    Je me suis plusieurs fois une question existentielle : comment est implémenté le calcul d'une fonction comme cos(x) dans une calculatrice , en assembleur , en C , en Java...............
    A partir du Intel 486 , le coprocesseur arithmétique prend en charge les fonctions trigonométriques , or comment sont-elles cablées : y-a-t-il une table des sin/cos ou existe-il une autre méthode de calcul dans les circuits du CPU ??

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Lut,


    Mathematiquement il existe des formules sous forme de sommes infinie pour obtenir le cos(x) ou l'exp(x).

    Il suffit alors d'aller jusqu'a un ordre de precision pour stopper la somme.

    Ex :
    exp(x) = 1 + x + x¨2/2 + x¨3/6 + .... + x¨n/n!
    le petit caracter apres "x", c puissance.

    Avec n qui parcourt ts les entiers. Ainsi, pour qu'un ordi puisse calculer exp(x) il va jusqu'a une certaine valeur de n et prend le resultat approche.

    Bon, pour chaque fonction, il y a un autre developpement possible.
    C'etait l'exemple de l'exponentiel.


    Voila,
    Bonne journee
    @++
    N'est mort ce qui a jamais dort et au long des ere peut mourir meme la mort

  3. #3
    mat.M
    Invité(e)
    Par défaut
    merci pour l'explication fournie
    mathias

  4. #4
    Ol'
    Ol' est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 56
    Points : 69
    Points
    69
    Par défaut
    Salut,

    Ton développement en série entière n'est valable qu'au voisinnage de 0. Je ne pense pas qu'il soit possible de calculer un cosinus ainsi.

    Et puis d'ailleurs, si je me souviens bien, toutes les fonctions ne sont pas développables en serie entière. Il doit y avoir un problème de régularité de la fonction.

    Voila
    Ol'

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Lut,

    Le developpement d'exonentiel est valable sur tt R, mais c vrai que les fonctions sinus et cosinus, leur developpement en serie entiiere n'est valable que sur [-1,1].

    Pour le logarithme, ils utilisent des methodes de calculs approches d'integrale vu que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ln(x) = int(1/t dt, 1, x).
    On a plus ou moins vu ca en annalyse numerique,
    mais pour les fonctions trigo, je ne vois pas trop, il doit exister des methodes de calculs approches, mais je ne connais pas.

    Peut etre avc la methode de Newton, ....


    Voila

    @++
    N'est mort ce qui a jamais dort et au long des ere peut mourir meme la mort

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 103
    Points
    103
    Par défaut
    Ah là là j'en vois encore qui confondent série entière et développement limité

    Pour répondre à la question originelle, les fonctions classiques (cos, sin, exp, ln(1-x), ch, sh, tan, arcsin...) sont calculées par des séries entières là où elles sont convergentes.
    Quant aux bidules un peu moins réguliers, je n'en sais rien. Intégrales ? Polynômes divers ? J'aimerais bien le savoir.

  7. #7
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Salut à tous !

    Je vous donne un petit extraiyt d'un bouquin :

    Beaucoup de mathématiciens croient que leurs (les fonctions trigo) valeurs approchées sont obtenues à partir de certaines suites de nombres que l'on trouve dans les livres de mathématiques...
    Par exemple, on pourrait croire que sin(x) s'obtient en effectuant les calculs décrits par la formule :

    x - x^3/(1*2*3)+x^5/(1*2*3*4*5) - x^7/(1*2*3*4*5*6*7) + ...

    ou par d'autres formules analogues...

    Et bien, [b]ce n'est pas le cas ![b]
    En réalité, comme le laisse supposer cet extrait, les séries telles que celle-ci ne sont pas utilisées, tout au moins dans les calculatrices.

    J'ai ainsi appris que dans les calc HP, c'est un algorithme mis au point par Jack Volder, est appelé Coordniate Rotation Digital Computer (CORDIC), qui est utilisé.
    N'ayant pas plus de précisions, je vous engage à faire une recherche par vous-même sur le sujet.

    Je vous donne ici un algo qui permet de calculer une tangente (angle en radians, s'il y a besoin de le préciser)...
    Il n'est surement pas utilisé dans les PC, mais c'est un début.
    C'est un algo de Henry Briggs, créé en ... 1624 !


    "ap" est un pas...

    Donnée : x
    u := 1
    v := 0
    p := 0

    @@1:

    k := 10^(-p)

    @@2:

    x > ap ?

    Oui => @@3
    Non => @@4

    @@4:
    x := x - ap
    u := u - kv
    v := ku+v
    => @@2

    @@3:

    tan = v/u

    Précision suffisante ?

    Oui => Fin
    Non => @@1


    Bonne découverte, et bonnes recherches !

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Lut all,


    Bon pour ce qui est du calcul de valeur approche d'integrales, je pense qu'ils utilisent des techniques d'analyse numerique.

    Reseigne toi sur la methode simpson, elle est assez bonne.

    Tiens, voila une page qui traite plusieurs methodes et le mec demande de les programmer :

    http://perso.wanadoo.fr/christian.squarcini/Exos_Sup/Feuille25/INTAPPR.htm

    Voila

    @++
    N'est mort ce qui a jamais dort et au long des ere peut mourir meme la mort

  9. #9
    Ol'
    Ol' est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 56
    Points : 69
    Points
    69
    Par défaut
    Salut,

    J'ai un peu réfléchi à cette question et il me semble impossible de calculer le développement en serie entière d'une fonction (même dans le rayon de convergence de la serie, il me semble que c'est la formule consacrée) en effet, la formule de Taylor donne :

    f(x) = f(x0) +f'(x0)*x +f''(x0)*x^2+...

    Or dans le cas du cosinus et au voisiange du x0, on n'a pas de problème avec les termes dérivés.

    Dans le cas des autres fonctions, il faudrait avoir une table des dérivées de toutes les fonctions.

    Voila ce que j'en pense
    Ol'

  10. #10
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Moi j'aime bien le DL (développement limité) de Taylor : il permet facilement de calculer les fonctions usuelles (cos,sin,tan,arctan,arcsin,arccos,exp,ln) :
    - calculer x^n : itération
    - calculer x^n/n! : on divise par d qui va de 1 à n (itération toujours)

    On s'arrête quand x^n/n! est inférieur à EPSILON (=10^-4 pour avoir 4 décimales par exemple).
    Pour avoir les DL de toutes ces fonctions :
    http://www.haypocalc.com/grandnbr/dl.php

    Effectivement faut se ramener dans un intervalle ([-1;1] ou [0;2] en général), plus on se rapproche de x0 (point où on calcule le DL), plus ça va vite! On utilise pour ça les propriétés des fonctions.
    Cos(2x) = (Cos(x)^2-1)/2
    Exp(2x)=[ Exp(x) ]^2
    Ln(2x) = Ln(x)+Ln(2)
    ...

    Visitez mes pages "Fonctions" :
    http://www.haypocalc.com/fct/index.php
    Pour retrouver les propriétés.

    On peut aussi utiliser l'algorithme de Newton, pour les racines carrés et le calcul de l'inverse d'un nombre en particulier. C'est très rapide comme algo !
    http://www.haypocalc.com/grandnbr/newton.php

    Après, on utilise des "moyennes arithmétiques", je sais pas trop comment ça marche, c'est c'est plus rapide ... après quelques milliers de décimales, donc inutile pour le commun des mortels.

    Pour l'algo de CORDIC :
    http://faq.maths.free.fr/

    Enfin, un peu de pub pour ma calculatrice formelle :
    http://www.haypocalc.com/
    Elle utilise la lib <math.h> du C pour calculer toutes les fonctions. C'est du calcul formel ! Càd sait calculer Racine(x^2) par exemple, ou bien Ln(a^n) ... (où a,n et x sont des variables, pas des valeurs)

    @+ Haypo

Discussions similaires

  1. Réponses: 18
    Dernier message: 27/02/2009, 20h19
  2. Fonctions exécutant des fonctions mathématiques
    Par degseb dans le forum Pascal
    Réponses: 11
    Dernier message: 10/01/2008, 17h05
  3. Classe Java qui implémente des fonctions oracles
    Par kamacho25 dans le forum Outils
    Réponses: 0
    Dernier message: 28/09/2007, 15h46
  4. Meilleure API pour des fonctions mathématiques
    Par mat360 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 18/06/2007, 18h51
  5. Listes des fonctions mathématiques
    Par boulette18 dans le forum MFC
    Réponses: 1
    Dernier message: 28/09/2005, 07h38

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