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 :

Approximation de la dérivée seconde


Sujet :

Mathématiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut Approximation de la dérivée seconde
    Bonjour à tous,

    J'ai une petite question concernant l'approximation numérique de la dérivée seconde d'une fonction quelconque.

    J'ai besoin d'effectuer ce calcul, mais lorsque j'utilise l'apporximation connue :
    F''(x) = ( F(x+dx) + F(x-dx) - 2F(x) ) / ( dx^2 )

    Pour dx très petit, j'obtiens 0 comme valeur à chaque fois alors que ce n'est pas du tout ce que je devrais obtenir. J'ai l'impression que c'est à cause de l'approximation des "double".

    Mais pourtant lorsque j'utilise l'approximation de la dérivée normale ( f(x+dx) - f(x) ) / dx j'obtiens la dérivée au point x sans problème.

    Pourquoi le "passage" à la dérivée seconde ne marche-t-il pas ? Et comment remédier à cela ?

    J'espère avoir été clair.
    Merci beaucoup d'avance

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Je ne sais pas où tu as trouvé ton approximation.
    j'en ai bricolé une à la main uniquement avec la définition, et ça marche:
    Exemple en python:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def f2(f,x,dx):
        return (f(x+2*dx)-2*f(x+dx)+f(x))/(dx*dx)
     
    def f(x):
        return x*x*x
     
    n=100
    for i in xrange(1,n):
        dx=1.0/i
        print f2(f,1,dx)
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    Je ne sais pas où tu as trouvé ton approximation.
    j'en ai bricolé une à la main uniquement avec la définition, et ça marche
    c'est la meme formule, a un offset "+dx" près.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    c'est la meme formule, a un offset "+dx" près.
    Sauf que, pour commencer, la mienne va fonctionner sur chacune des deux bornes de l'intervalle de définition, s'il s'agit d'un intervalle borné et pas l'autre formule.
    En outre tu parles seulement du numérateur, alors dans ce cas 0/dx et dx/dx c'est la même à dx près (au numérateur) l'une tend vers 0 et l'autre vers 1. Donc je ne suis pas si sûr que les choses soit équivalentes à un offset dx près, surtout quand cet offset tend vers 0.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    C'était juste une observation sur ta remarque "Je ne sais pas où tu as trouvé ton approximation."

    titiii : f''(x) = ( f(x+dx) + f(x-dx) - 2f(x) ) / ( dx^2 )

    zavo : f2(x) = (f(x+2*dx)-2*f(x+dx)+f(x))/(dx*dx)

    moi : f2(x) = f"(x+dx)

    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    moi : f2(x) = f"(x+dx)
    Je vois que tu es en forme.
    Je relève le défi:
    f2(x)=f"(x)
    qui dit mieux ?
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

Discussions similaires

  1. Approximation de dérivée seconde fiable aux bords
    Par agloups dans le forum Mathématiques
    Réponses: 4
    Dernier message: 19/07/2013, 08h01
  2. Dérivée seconde algorithme
    Par sergy01 dans le forum Mathématiques
    Réponses: 15
    Dernier message: 07/03/2012, 08h36
  3. dérivée seconde avec pas non constant
    Par ginafort dans le forum Mathématiques
    Réponses: 7
    Dernier message: 07/03/2011, 08h06
  4. Réponses: 2
    Dernier message: 02/03/2011, 13h30
  5. Tracé de dérivées secondes
    Par yassine228 dans le forum MATLAB
    Réponses: 0
    Dernier message: 10/04/2008, 20h35

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