p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre du Club
    Inscrit en
    janvier 2010
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 254
    Points : 51
    Points
    51

    Par défaut cubic spline interpolation avec Scipy

    Bonjour a tous,

    J'ai un jeu de données qui ressemble à ca :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    position number_of_tag_at_this_position 
    3 13
    4 25 
    8 23 
    6 12
    Je veux appliquer a ce jeu de données un interpolation cubique, j'ai donc fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import numpy as np 
    from scipy import interpolate 
    x = [3,8,13,23] 
    y = [4,6,25,12] 
    tck = interpolate.splrep(x,y) # cubic`
    Et maintenant j'aimerai calculer la derivée de la fonction a chaque point de l'interpolation et identifier la position ou la dérivée vaut 0 ... quelqu'un pourrait m'aider ?
    Merci d'avancce

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    janvier 2013
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : janvier 2013
    Messages : 353
    Points : 624
    Points
    624

    Par défaut interpoler la dérivée

    Bonjour.
    Il n'y a pas de fonction qui le fait directement.
    On peut toujours interpoler la dérivée de la spline par une autre spline, pour ensuite utiliser la fonction sproot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy import interpolate
     
    x = [3,8,13,23] 
    y = [4,6,25,12] 
    tck = interpolate.splrep(x,y) # cubic`
     
    xnew = np.arange( 1, 24, 0.1)
    ynew = interpolate.splev(xnew,tck,der=0)    # spline
    yder = interpolate.splev(xnew,tck,der=1)    # dérivée
     
    # Estimation de la dérivée par une autre spline
    tckder = interpolate.splrep(xnew,yder)
    print interpolate.sproot(tckder)
     
    plt.plot( x, y, 'ob', xnew, ynew, 'r')
    plt.draw() ; input("--- fini ---")

  3. #3
    Membre chevronné
    Profil pro
    Ingénieur de recherche en informatique
    Inscrit en
    juin 2009
    Messages
    435
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche en informatique

    Informations forums :
    Inscription : juin 2009
    Messages : 435
    Points : 710
    Points
    710

    Par défaut

    Tu as la fonction splev, sa documentation dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     scipy.interpolate.splev(x, tck, der=0, ext=0)
     
        Evaluate a B-spline or its derivatives.
     
        Given the knots and coefficients of a B-spline representation, evaluate the value of the smoothing polynomial and its derivatives. This is a wrapper around the FORTRAN routines splev and splder of FITPACK.

  4. #4
    Membre du Club
    Inscrit en
    janvier 2010
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 254
    Points : 51
    Points
    51

    Par défaut

    Bonjour __dardanos__, et merci pour ta réponse,
    je voudrais être sure de bien comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print interpolate.sproot(tckder)
    me renvoi les points où la dérivée est nulle ?

    Comment puis je accéder à la valeur en ordonnée où xnew=5 par exemple ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    janvier 2013
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : janvier 2013
    Messages : 353
    Points : 624
    Points
    624

    Par défaut

    Salut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print interpolate.sproot(tckder)
    retourne en effet les points où la dérivée est nulle (car tckder est la spline de la dérivée).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print interpolate.splev(5, tck)
    retourne la valeur de la spline interpolant l'ensemble des données en x=5.

    Le lien vers la doc officielle.

Discussions similaires

  1. Interpolation avec la méthode spline
    Par Redak2010 dans le forum MATLAB
    Réponses: 3
    Dernier message: 17/06/2011, 14h37
  2. interpolation avec spline cubique
    Par hamadagm dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/04/2011, 10h42
  3. cubic spline avec des conditions aux limites
    Par ENSAM-ALAMI dans le forum MATLAB
    Réponses: 4
    Dernier message: 23/05/2008, 11h44
  4. Cubic spline sous MatLab
    Par ENSAM-ALAMI dans le forum MATLAB
    Réponses: 3
    Dernier message: 09/04/2008, 17h32
  5. Interpolation avec des NaN
    Par kis93 dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/12/2007, 14h38

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