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 :

deriver une fonction


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Par défaut deriver une fonction
    Comment fait-on pour dériver une fonction math en C++?

    Merci


  2. #2
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par défaut
    "dériver une fonction " ??

    je dérive des classes mais pas des fonctions

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 116
    Par défaut
    Je pense que danduril parlait de dérivation au sens mathématique de terme càd que dériver x² donne 2x (en dérivant sur x bien sûr).
    En tout cas avec la math.h du C, il n'y a pas moyen autant que je sache.

  4. #4
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Par défaut
    T'as jamais fait des fonctions dérivées en math?
    f'(x) tu connais?




    Pour seulement ceux qui connaissent la réponse (et qui ont passé le bac) merci de me faire savoir comment faire...

  5. #5
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    la notion de fonction au sens mathematique n'existe pas en c++.
    c'est pourquoi parler de deriver une fonction ne veut pas dire grand chose dans le domaine du c++. Alors que deriver ... une classe signifie quelque chose ...

    c'est donc a toi de coder le concept de fonction. Et donc c'est aussi a toi de coder les methodes qui vont bien (deriver, integrer ...).

    avec une classe fonction, tu pourrais deja y voir un peu plus clair

  6. #6
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Par défaut
    merci khayyam90

    mais il me semblait que dans "math.h", il existe une methode permettant de dériver

    merci quand même

    je continu de chercher

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 116
    Par défaut
    non (voir mon post plus haut), il y a tous les sin, cos, atan et autres mais ruen qui concerne des dérivation/intégration etc.

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Ben, il faut dire que là, on entre dans le calcul formel...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Effectivement on entre dans le calcul formel.
    Et je peux vous garantir que la programmation à ce niveau n'est pas de la blaque. Image un peu une table des fonctions avec leur dérivées et intégrales. Ton programme doit être capable de faire d'abord la moindre somme formelle de "x + x = 2x", et surtout le faire comprendre que le terme "2x" est au fait "2*x".

    ça m'a rappelé un programme que j'ai eu à faire celui d'évaluer une expression mathématique donnée sous forme de chaine

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CFunction<double> f("f(x,y) = sin(x + 2y) + x^2 + ln(y)");
    cout << "La valeur de f(x,y) au point (3.5, 4.2) est\n"
           << f(3.5, 4.2) << endl;
    La fonction f(x,y) est passé sous forme de chaîne de caractère
    La classe template CFunction analyse la fonction au moyen de son constructeur qui vérifie de manière syntaxique, lexical, nature, type des expresions, etc.
    L'opérateur d'appel de fonction operator() est celle qui transforme la classe CFunction en un foncteur et se charge de l'évaluation effective syntaxique, lexicale, etc.

    Rien que ce petit programme console m'a pris des mois pour le mettre sur pied. Je ne te dis pas la foule de classes qui se cache derrière. Et surtout sa technique d'évaluation par des appels récursives de quoi se perde dans la logique du programme de calcul. Et surtout qu'à partir d'une fonction f() on peut appeller une autre fonction g() (évalution de fonctions de fonctions).

    L'étape suivante était de perfectionner mes classes pour faire des dérivés et intégrales et surtout résoudre les équations de manière formelle.

    Du moins numériquement j'ai pu écrire un programme qui résout des systèmes d'équations différentielles.

    Enfin j'ai surtout était inspiré par la puissance de calcul formelle d'une calculatrice performante la Texas Instrument 89 - 92 - 92 Plus et ça version actuelle TI Voyage 200.

    Bon je conclus qu'il faudra écrire d'important quantité de code. Mais je crois qu'il doit y avoir des outils de calculs mathématiques en commençant par MatLab.

    Gabrielly

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 48
    Par défaut
    J'avais écrit une fonction (qui marchait !) qui calculait numériquement le gradient d'une autre fonction et donc calculait implicitement et numériquement des fonctions dérivées.

    En fait pour calculer la valeur de la dérivée d'une fonction f en un point donné x tu peux utiliser la formule :

    f'(x)= (f(x+h)-f(x-h))/(2*h) lorsque h tend vers 0.

    En pratique pour calculer la valeur de la dérivée de f en un point x tu utilises donc la formule ci-dessus en prenant une valeur de h "suffisamment petite" (avec toutes les conséquences que peut avoir le mot "suffisamment" !!) avec par exemple h=10^-5. Voilà, je sais que ma réponse concerne une application numérique et pas formelle mais étant donné que tu ne précisais pas cela dans ton message initial ...

  11. #11
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    De manière générale en programmation, pour dériver :
    - soit on connaît l'expression mathématique de la fonction et dans ce cas il est aisé de la dériver à la main, puis ensuite de l'implémenter,
    - soit on ne la connaît pas, et dans ce cas on est obligé d'avoir recours au calcul numérique (méthode donnée par exemple par rulianf mais il y en a d'autres, et un tas de bibliothèques doivent le faire).

    La première solution est toujours à privilégier car :
    - elle permet d'avoir accès à la dérivée de manière bien plus rapide que par le calcul numérique (où pour chaque point où l'on veut la dérivée il faut calculer par rapport aux points à côté, alors que dans l'autre cas on applique bêtement la formule mathématique)
    - on peut avoir accès à n'importe quelle valeur, et pas seulement des valeurs discrétisées comme dans un calcul numérique (où si l'on veut une valeur précise il fauit encore faire parfois des interpolations par exemple).

    Donc tout dépend de ce que tu as, mais si c'est un problème mathématique avant tout, privilégie ta tête plutôt que l'ordi, et dans l'autre cas utilise le car tu n'as pas le choix....

    A+

Discussions similaires

  1. calcul de la derivée d'une fonction quelconque
    Par s-ehtp dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 09/10/2013, 01h37
  2. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  3. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22
  4. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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