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

MATLAB Discussion :

Trouver les coefficients d'une fonction


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Trouver les coefficients d'une fonction
    Bonjour,

    J'aimerais deriver une fonction polyniomiale, mais pour pouvoir utiliser la fonction POLYDER j'ai besoin de connaitre ses coefficients! Or ma fonction est sous la forme d'un vecteur vu que j'avais trouvé cette fonction en fonction de x
    avec x=linspace(1,100,100).
    Est-ce que quelqu'un pourrait me dire comment trouver les coefficents de mon polynome oubien me dire s'il est possible de deriver ma fonction directement a partir du vecteur dependant de x!

    Merci d'avance...

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    notez que cet une partie d'un exercise et qu'il m'est explicitement indiqué que je ne pouvais pas utiliser la fonction polyfit!

  3. #3
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Si ta fonction est purement polynomiale, tu peux utiliser l'opérateur \. Exemple :

    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
     
    >> x0=ones(1,5);
    >> x1=1:5;
    >> x2=x.^2;
    >> y=2*x2-5*x1+10*x0;
    >> A(1:5,1)=x0;
    >> A(1:5,2)=x1;
    >> A(1:5,3)=x2;
    >> A\(y.')
     
    ans =
     
       10.0000
       -5.0000
        2.0000
    ++

  4. #4
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    c'est bien joli ça cette ide d'utiliser la division à gauche ( \ ) Je cherchais rapidement une solution dans la tête tout en lisant les messages et je n'avais pas pensé à celle là.

    Note que tu dois anticiper le degré de ton polynome.
    si tu as choisi un degré trop petit, la fonction ne va pas fitter
    si tu as choisi un degré trop grand, c'est moins grave tu auras les coefficients de degré fort qui vont tomber à zéro (ou presque).

  5. #5
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    ben en fait, tu dois toujours anticiper le degré du polynôme, que tu utilises \ ou polyfit il me semble. Il faut fournir la forme fonction pour pouvoir faire un fit.

    A+

  6. #6
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Dam2227 Voir le message
    ben en fait, tu dois toujours anticiper le degré du polynôme, que tu utilises \ ou polyfit il me semble. Il faut fournir la forme fonction pour pouvoir faire un fit.

    A+
    Bien sur. Je mentionnais ça parceque aphilippartd a été assez correct pour nous dire qu'il s'agit d'un exo. Donc je voulais le mettre sur la voie. Par exemple avec l'anti-division il peut calculer la variance des résidus. Il ajoure un degré au polynome tant que la variance des résidus diminue. A un moment il va avoir une variance nulle ou presque -> c'est bon.

  7. #7
    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
    Salut!

    Tu as n points (4 dans mon exemple).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x1  y1
    x2  y2
    x3  y3
    x4  y4
    Ton polynôme sera donc de degré n-1 (ici 3):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y = a0 + a1*x + a2*x^2 + a3*x^3
    Dans cette expression, tu remplaces successivement x et y par les coordonnées de tes points:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    y1 = a0 + a1*x1 + a2*x1^2 + a3*x1^3
    y2 = a0 + a1*x2 + a2*x2^2 + a3*x2^3
    y3 = a0 + a1*x3 + a2*x3^2 + a3*x3^3
    y4 = a0 + a1*x4 + a2*x4^2 + a3*x4^3
    En résolvant ce système par rapport à a0, a1, a2 et a3, tu obtiens les coefficients de ton polynôme.

    C'est tellement plus simple que de chercher une fonction toute faite!
    Jean-Marc Blanc

  8. #8
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par FR119492 Voir le message

    En résolvant ce système par rapport à a0, a1, a2 et a3, tu obtiens les coefficients de ton polynôme.

    C'est tellement plus simple que de chercher une fonction toute faite!
    Jean-Marc Blanc
    oui , et la résolution du système se fait par ... l'anti division (\) . donc on dit bien la même chose

    ton système s'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    % Soit :
    X = [x1;x2;x3;x4];
    XX = [ones(size(X)) X X.^2 X.^3] ;
    Y = [y1;y2;y3;y4] ;
    K = [a0;a1;a2;a3] ;
    % résoudre l'équation suivante en K :
    Y = XX*K ;
    La solution est :ce qui est expliqué ici :d'ou l'algo général si on ne connait pas le degré de X :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Calculer la matrice XX à un degré de départ donné
    K = XX \ Y ;
    % Calculer le résidu epsilon
    epsilon = norm(Y - XX*K);
    tant que epsilon n'est pas très petit, augmenter XX d'un degré et recommencer

  9. #9
    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
    Salut!
    donc on dit bien la même chose
    Tout à fait d'accord. Je l'ai seulement exprimé d'un point de vue plus "algorithmique".
    Jean-Marc Blanc

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 309
    Points : 52 901
    Points
    52 901
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Je l'ai seulement exprimé d'un point de vue plus "algorithmique".
    Comme tu es modeste => http://jmblanc.developpez.com/algori...mes-lineaires/

  11. #11
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Dut Voir le message
    merci pour le lien
    Impressionnant ! C'est un vrai cours de fac !!!

    Il y a aussi ça : http://www.developpez.net/forums/d52...rbes-surfaces/. C'est sans prétention aucune, mais plus directement en rapport avec le problème posé dans ce fil.

  12. #12
    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
    Salut!
    C'est un vrai cours de fac !!!
    Désolé, mais ayant été prof pendant un quart de siècle, je n'ai pas réussi à faire autrement! Je n'exclus d'ailleurs pas de traiter d'autres sujets de manière analogue.
    Jean-Marc Blanc

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/11/2014, 15h24
  2. Trouver les coeff d'une fonction non lineaire
    Par kaizerix dans le forum R
    Réponses: 1
    Dernier message: 30/07/2013, 16h42
  3. Trouver les paramètres d'une fonction pour la faire tendre vers une valeur
    Par cedrix57 dans le forum Intelligence artificielle
    Réponses: 4
    Dernier message: 24/05/2011, 10h38
  4. Trouver rapidement les zéros d'une fonction
    Par nahouto dans le forum MATLAB
    Réponses: 17
    Dernier message: 23/01/2009, 13h32
  5. [POO] passage nom objet dsn les parametres d'une fonction
    Par melou dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 21/10/2005, 17h26

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