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

C Discussion :

dériveé d'une fonction


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut dériveé d'une fonction
    salut a tou, voila j'ai parcouru le web , sans trouver la réponse a ce que je voudrai savoir,
    comment peut-on calculer la dérivée d'une fonction math en C?
    (ex:f(x)=exp(ax)=>f'(x)=aexp(ax)).
    quelle librairie a employer?

    merci d'avance de votre réponse

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut
    Ce n'est pas unquestion de C mais d'algorithme, une fois que tu l'auras, tu pourras revenir pour qu'on t'aide à le traduire en C.
    Pour ce qui est librairies qui font ça en C, je ne sais pas.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    je pensais que , comme il existe la librairie math.h pour calculer les exp, cos, sin...
    qu'il existait une librairie qu'il calcul les dérivée d'office
    en faite je veux calculer l'intégrale d'une fonction par la méthode de trapèzehttp://fr.wikipedia.org/wiki/M%C3%A9..._trap%C3%A8zeset je demande cette question pour calculer la dérivée première puis seconde

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Si tu fais ça uniquement de manière numérique (et non de manière formelle), t'as pas besoin de librairie.

    Si ta fonction s'appelle f, et que tu veux la dérivée en a, tu fais (f(a+epsilon) - f(a)) / epsilon, epsilon étant la plus petite variation perceptible d'une valeur donnée d'un float.

    Donc il faut savoir que epsilon dépend de a !

    Dans le header <limits.h>, tu as le define FLT_EPSILON qui représente la plus petite variation applicable à un float valant 1.0f.

    En C/C++, si tu fais float f = 1000000.0f + FLT_EPSILON, tu auras toujours f = 1000000.0f, parce que FLT_EPSILON est imperceptible par rapport à 1000000.0f, c'est à cause de la représentation approchée d'un réel par des flottants.

    Ainsi, epsilon doit valoir a*FLT_EPSILON.

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    float derive(float (*f)(float), float a)
    {
        return ( f(a*(1.0f+FLT_EPSILON)) - f(a) ) / (a*FLT_EPSILON);
    }

    Par contre, comme le C/C++ sont un peu limités parce qu'ils sont pas très orientés fonctionnels, tu peux pas créer simplement des fonctions à la volée comme ça, faire des fonctions qui renvoient des fonctions en fonction d'une fonction.

    Là, pour avoir la fonction dérivée de f, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    float f(float x)
    {
        /* Code */
    }
     
    float df(float x)
    {
        return diff(f, x);
    }
    Oui, on peut pas curryfier des fonctions simplement. Mieux vaut un langage un peu plus fonctionnel pour ça, comme OCaml.

    Sinon tu peux aussi passer au C++ qui dispose de bind1st (pour fixer le premier argument d'une fonction à 2 variables par exemple), ça utilise des foncteurs, grosse artillerie lourde quand même, mais au moins c'est plus pratique.

Discussions similaires

  1. calcul de dérivée d'une fonction
    Par maria2013 dans le forum R
    Réponses: 3
    Dernier message: 03/08/2013, 02h08
  2. Dérivée d'une fonction
    Par arbas dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/01/2012, 11h47
  3. [Débutant] Double intégrale et dérivée d'une fonction
    Par samo25 dans le forum MATLAB
    Réponses: 5
    Dernier message: 09/01/2012, 18h04
  4. Dérivée d'une fonction à deux dimensions f(x,y)
    Par an1981 dans le forum MATLAB
    Réponses: 4
    Dernier message: 12/02/2008, 09h29
  5. codage du calcul de dérivée d'une fonction mathématique
    Par pispa2005 dans le forum Mathématiques
    Réponses: 5
    Dernier message: 08/01/2005, 20h54

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