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 fonction z=f(x,y) d'après un tableau de point


Sujet :

Mathématiques

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Approximation de fonction z=f(x,y) d'après un tableau de point
    Bonjour à tous,

    Je suis tombé sur un problème dont je n'arrive pas à me sortir, donc je fais appel à toute personne capable de m'aider.


    Imaginons un tableau de point x,y,z (pris au hasard)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x        y       z
    3       20       4
    4       20       4,5
    5       33       7
    6       40       9
    7       40       10
    par exemple.


    J'aimerais alors pouvoir construire une fonction z=f(x,y) de manière à pouvoir calculer (par interpolation ou extrapolation, donc) le z correspondant à toutes les combinaisons de x,y voulues.

    Cette fonction z=f(x,y) ne doit pas nécessairement passé par la série de point connu, elle peut être une approximation de la fonction passant par ces points.

    Je pense enfin que la fonction ne dépasserait pas le second degré (mais j'imagine que ça ne change pas grand chose que ce soit degré 2 ou 3). La fonction peut être représentée par une surface 3D

    J'espère avoir été clair et je vous remercie déjà pour votre aide.

    A+

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Tu peux procéder par triangulation.
    Une interpolation simple est possible pour tout point à l'intérieur d'un triangle dont les trois sommets sont des points du tableau.
    Supposons donc que M(x,y)
    se trouve dans le triangle
    M1(x1,y1)
    M2(x2,y2)
    M3(x3,y3)
    Alors M possède des coordonnées barycentiques
    c'est à dire qu'il existe a,b,c tels que
    a+b+c=1
    et M est la barycentre du système (M1,a) (M2,b) (M3,c)
    Cela dit
    On a z1=f(M1)
    z2=f(M2)
    z3=f(M3)
    On peut alors proposer
    az1+bz2+cz3
    pour valeur extrapollée de f(M)
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    Tu peux procéder par triangulation.
    Si tu décides de faire comme ça, regarde du coté de la triangulation de Delaunay. Elle a plein de "bonnes propriétés" qui font qu'elle est utilisable dans ce contexte.

    En moins linéaire, tu as les polynomes d'interpolation de Lagrange, mais vu que ta grille n'est pas carrée, c'est un peu plus chiant à mettre en oeuvre.

    Si tu veux quelque chose qui ne passe pas nécessairement par les points, tu as des interpolation comme "spleen plaque mince" et ce genre de chose qui peuvent t'aider.

    Bref, y a plein de choses qui existent :-)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Salut,


    Merci pour vos réponses,

    Pour la triangularisation je ne sais pas si c'est le bon choix, car ça va créer des plans et le tableau ne contiendra probablement pas beaucoup de donnée (les données sont entrées par les utilisateurs du programme et ne possèderont pas forcément beaucoup de 'points tests')

    Les plans risquent donc d'être trop grand, c'est pourquoi je chercherais plutôt une courbure de second degré.
    Je vais néanmoins regarder à la triangularisation avant de me décider. Je vais aussi aller faire un tour du coté des splines plaques minces comme évoqués par Alex (le spleen c'est plutôt chez Baudelaire )


    Ha aussi petite info, si on reprend le tableau donné dans le premier post:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x        y       z
    3       20       4
    4       20       4,5
    5       33       7
    6       40       9
    7       40       10
    les données qui seront extrapolée devraient s'étaler sur une plage de -15 à 15 pour les x, sur une plage de 20 à 50 sur celle des y. (et par pas de 1 pour les 2)

    Je veux dire donc par là qu'il risque d'y avoir peu de point par rapport à ceux demandé, c'est pourquoi il faudrait que la forme de la surface soit la plus fidèle possible à ce que ce devrait être. donc par connaissance pratique, z serait un polynôme de degré 2 par rapport à x et par rapport à y, ça serait degré 1 (ptet 2 mais 1 sera ok)

  5. #5
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut
    Bonjour,

    tu peux utiliser l'interpolation polynômiale de LAGRANGE définie par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    li(xi) = Pi(j = 0, ..., n avec j != i) (x - xj) / (xi - xj)
    Pi : Produit
    Le polynôme d'interpolation de LAGRANGE s'écrit donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Pn(x) = Sigma(i = 0, ..., n) fi * li(x)
    Sigma : somme
    Ce polynôme interpole une fonction f connue en (n + 1) points : (x0, f0), ..., (xn, fn).

    Bon courage.

  6. #6
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut Approximation de fonction z=f(x,y) d'après un tableau de point
    Salut!

    Pour ce genre de problèmes, les splines bicubiques donnent généralement de bons résultats. Si par hasard tu as accès à la librairie IMSL, essaie les routines IBCEVU, IBCICU et IBCIEU.

    Bonne chance.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Clustering et approximation de fonction
    Par nanath02 dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 12/01/2011, 14h30
  2. Réponses: 2
    Dernier message: 14/08/2009, 16h58
  3. Réponses: 8
    Dernier message: 01/10/2007, 19h18
  4. Réponses: 4
    Dernier message: 11/07/2006, 23h58
  5. Réponses: 2
    Dernier message: 05/04/2006, 12h59

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