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

Excel Discussion :

Approximation de fonction z=f(x,y) d'après un tableau de point


Sujet :

Excel

  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 fais appel au forum pour m'aider dans l'obtention d'une (approximation d'une) fonction à deux variables sur base d'un tableau de point, donc une fonction f(x,y)= z disons

    Je m'explique

    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.

    En espérant avoir été clair, je vous remercie déjà pour l'aide éventuelle que je recevrai.
    Et bonne fin de soirée au forum

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Si c'est une regression linéaire que tu veux tu as 2 fonctions d'excel qui te la calcule facilement :
    y = ax + b
    PENTE => a
    ORDONNEE.ORIGINE => b

    eric

  3. #3
    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
    Merci, mais ça je connais, c'est la fonction d'une droite, ici je parle d'une surface.

    Je chercherais une fonction du type

    z = a + bx + cy + dxy + ex²

    bye

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Fio,
    Citation Envoyé par manudcn Voir le message
    Merci, mais ça je connais, c'est la fonction d'une droite, ici je parle d'une surface.

    Je chercherais une fonction du type

    z = a + bx + cy + dxy + ex²

    bye
    Alors, si tu connais, pourquoi poser la question ?

    C'est toi qui doit effectivement avoir une idée sur la forme de la fonction, sinon on peut trouver n'importe quoi.
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    pour chacun des cas que tu as montré, je t'ai trouvé tes a, b, c, d et e
    Mais, ils sont tellement différents, que je ne vois pas comment tu veux harmoniser cela pour obtenir quelque chose qui te retourne une probabilité de résultat cohérente !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    a-----------b-----------c-----------d-----------e-----------
    0,000977756- 0,00293327- 0,01955512- 0,05866536- 0,0087998-- 
    0,000873438- 0,002516--- 0,01746877- 0,05031995- 0,00713072- 
    0,000801939- 0,0021585-- 0,01510928- 0,03852254- 0,00534323- 
    0,000784496- 0,00205384- 0,01441156- 0,03433616- 0,00471528-
    0,000779198- 0,00201676- 0,01419965- 0,03285281- 0,00445569-

  6. #6
    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
    @Maxence HUBICHE
    Merci beaucoup pour ton aide, peux-tu m'indiquer comment tu obtiens la valeur des coefficients? Ceci de manière à pouvoir faire des tests sur plusieurs tableau et voir dans quel cas l'approximation est suffisamment correcte. (Les données input sont entrées par les futurs utilisateurs du programme et donc suivant les fabricants des machines il peut y avoir plus ou moins de données)

    Bonne aprèm au forum

  7. #7
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Citation Envoyé par manudcn Voir le message
    @Maxence HUBICHE
    Merci beaucoup pour ton aide, peux-tu m'indiquer comment tu obtiens la valeur des coefficients? Ceci de manière à pouvoir faire des tests sur plusieurs tableau et voir dans quel cas l'approximation est suffisamment correcte. (Les données input sont entrées par les futurs utilisateurs du programme et donc suivant les fabricants des machines il peut y avoir plus ou moins de données)

    Bonne aprèm au forum

    J'ai entré ces infos (les tiennes) sur une feuille de calcul
    J'ai fait une formule (celle que tu indiques) en faisant systématiquement référence à des cellules pour A, B, C, D et E
    Enfin, j'ai utilisé la macro complémentaire Solveur pour faire la résolution : Résultat de la formule = Valeur de Z

    J'ai lancé le solveur autant de fois qu'il y a de lignes.

    Tout cela est, bien sûr, parfaitement paramétrable.

    Je te ponds une petite macro dès que je me suis libéré un peu de temps

  8. #8
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    tadaaaa !
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub Go()
        'Cette macro part du principe que :
        '   1- tu as ajouté le SOLVEUR dans les références du projet
        '   2- tu as tes valeurs x dans la colonne A, à partir de la ligne 2
        '   3- tu as tes valeurs y dans la colonne B
        '   4- tu as tes valeurs z dans la colonne C
        'Les valeurs a, b, c, d et e apparaitront alors dans les colonnes F, G, H, I et J
        'Une estimation du résultat obtenu avec ces variable sera présenté dans la colonne E
        ' (eh oui ! D ne sert à rien... :))) )
     
        Dim param As Range
        '>>>>
        ThisWorkbook.Activate
        Feuil1.Select
        Range("A2").Select
        '>>>>
        Do Until IsEmpty(ActiveCell)
            ActiveCell.Offset(0, 4).Formula = "=RC[1]+RC[2]*RC[-4]+RC[3]*RC[-3]+RC[4]*RC[-4]*RC[-3]+RC[5]*RC[-4]^2"
            Set param = Range(ActiveCell.Offset(0, 5), ActiveCell.Offset(0, 9))
            param.Formula = 0
            SolverOk SetCell:=ActiveCell.Offset(0, 4).Address(True, True, xlA1), _
                        MaxMinVal:=3, _
                        ValueOf:=CStr(ActiveCell.Offset(0, 2).Value), _
                        ByChange:=param.Address(True, True, xlA1)
            SolverSolve True, False
            ActiveCell.Offset(1, 0).Select
        Loop
     
    End Sub

  9. #9
    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
    super merci, je teste tout ça

    bonne soirée

    EDIT: voilà je voulais remercier le forum pour son aide, je suis entrain de résoudre le problème donc même si ce n'est pas encore fait, je préviens pour vous éviter de passer du temps sur ça.

    Bonne nuit à tous

+ 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, 13h30
  2. Réponses: 2
    Dernier message: 14/08/2009, 15h58
  3. Approximation de fonction z=f(x,y) d'après un tableau de point
    Par manudcn dans le forum Mathématiques
    Réponses: 5
    Dernier message: 25/09/2007, 19h43
  4. Réponses: 4
    Dernier message: 11/07/2006, 22h58
  5. Réponses: 2
    Dernier message: 05/04/2006, 11h59

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