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 :

Système équations non linéaires, résolution ?


Sujet :

Mathématiques

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mai 2003
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Système équations non linéaires, résolution ?
    Bonjour à tous,

    J'ai la résolution d'un système d'équations non linéaires (2 équations, 2 inconnues) du type :

    f(x,y)=0
    g(x,y)=0

    Je travaille en C++/C...je n'arrive pas à trouver pour le moment une librairie capable de faire celà...

    Quelqu'un aurait-il un tuyau ? Un mot clé ?


    MErci par avance

    Cordialement

    MERCIER Sébastien

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    il me semble pour que ce genre de problèmes il faut utiliser la méthode Levenberg-Marquardt. (A confirmer).

  3. #3
    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
    Citation Envoyé par smercier2 Voir le message
    J'ai la résolution d'un système d'équations non linéaires (2 équations, 2 inconnues) du type :
    f(x,y)=0
    g(x,y)=0
    Il y a deux problèmes distincts:
    Problème de l'existence et du nombre des solutions (plutôt algébrique par nature)
    Problème du calcul d'une solution dans un ensemble particulier (souvent un rectangle où on sait a priori qu'une solution existe (problème d'analyse numérique plutôt).
    Pour le premier, en toute généralité je n'ai pas grand chose à proposer sauf peut être quand les équations sont algébriques (polynomiales). C'est dans tous les cas un pb assez (très) difficile.
    Pour le second les choses sont plus simples:
    une équation f(x,y)=0 définit le plus souvent une fonction implicite y=h(x), c'est le cas en particulier pour les fonctions continument différentiables au voisinage d'un point où la dérivée par rapport à la seconde variable est non nulle, on peut même avoir une expression approchée de cette fonction par un développement limité faisant intervenir cette dérivée partielle.
    Si on est dans le cas où on peut appliquer cela pour les deux à la fois. Le système se ramène à h(x)=k(x) soit (h-k)(x)=0 annulation d'une fonction continue, pour ce pb les méthodes sont nombreuses.
    Le problème étant symétrique sur les deux variables on peut aussi être ramené à x=k(y) et x=h(y)
    ou bien
    y=h(x) et x=k(y)
    Dans le dernier cas on cherche un point fixe, ce qui revient encore à annuler une fonction continue.
    Je ne connais aucun programme C qui fasse cela mais cela ne doit pas être difficile à écrire.

  4. #4
    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
    En fait j'aurais peut être été plus clair si j'avais utilisé un langage 'graphique'
    On cherche une solution au voisinage d'un point M0(x0,y0).
    On remplace localement la courbe f(x,y)=0 par sa tangente au point d'abscisse x0, la courbe g(x,y)=0 par sa tangente au point d'abscisse x0, l'intersection des deux tangentes est certainement plus près du point cherché que M0, il reste à itérer le processus.

  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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    En fait j'aurais peut être été plus clair si j'avais utilisé un langage 'graphique'
    On cherche une solution au voisinage d'un point M0(x0,y0).
    On remplace localement la courbe f(x,y)=0 par sa tangente au point d'abscisse x0, la courbe g(x,y)=0 par sa tangente au point d'abscisse x0, l'intersection des deux tangentes est certainement plus près du point cherché que M0, il reste à itérer le processus.
    Bref, la methode de newton... c'est ca ?

  6. #6
    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,

    voici les méthodes les plus utilisées pour la résolution des systèmes d'équations non linéaires :
    • Méthode de Newton
    • Méthode du point fixe
    • Méthode de Gauss - Siedel
    • Méthode de relaxation

    Bon courage.

  7. #7
    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
    Bref, la méthode de Newton... c'est ca ?
    Formellement non, mais on peut jouer sur les mots.
    La méthode de Newton consiste à calculer une solution de f(x)=0 au voisinage d'un point en remplaçant la courbe par sa tangente, et en proposant comme nouvelle approximation l'intersection de cette tangente avec l'axe des x. Le fondement théorique de newton est l'approximation locale des fonctions par des fonctions du premier degré 'affines'.
    Ici, le fondement théorique est le théorème dit 'des fonctions implicites'. cela dit, l'idée de base est la même.
    Newton est avec Leibniz le fondateur du calcul différentiel, il est donc le père de tout.

  8. #8
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Voici une liste de librairies.
    http://www.ici.ro/camo/hnp.htm

    J'ai utilisé solvopt et j'en suis plutôt satisfait.

    Tu peux voir ton problème comme la minimisation de f^2(x,y) + g^2(x,y)

    Si tu trouves une solution de coût nul, c'est gagné!

  9. #9
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par FrancisSourd Voir le message
    Tu peux voir ton problème comme la minimisation de f^2(x,y) + g^2(x,y)

    Si tu trouves une solution de coût nul, c'est gagné!
    Oui, c'est ce que j'ai pensé aussi... mais est-ce que cette methode va converger vers les memes valeurs que "f(x,y)=0 ET g(x,y)=0".

    Dans un cas on va faire intervenir les derivées partielles des fonctions f() et g(), et dans l'autre les derivées partielles de H()=f^2()-g^2(). On risque de créer des nouveaux minima locaux avec la fonction H(), non ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mai 2003
    Messages : 12
    Points : 9
    Points
    9
    Par défaut SolvOpt ?
    Merci à tous de vos réponse qui m'ont un peu éclaircie...

    Est-ce que "SolvOpt" nécessite l'installation de "Matlab" ?
    Ce qui voudrait dire achat d'une licence ?

    MErci par avance

    MERCIER Sébastien

  11. #11
    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 Système équations non linéaires
    Salut.

    Le mieux est d'aller regarder dans "Numerical Recipes". Dans mon édition, qui n'est pas très récente, avec les exemples en Fortran, c'est le paragraphe

    9.6 Newton-Raphson Method for Nonlinear Systems of Equations.

    Bonne chance
    Jean-Marc Blanc

  12. #12
    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
    Bonsoir,

    j'ajoute la méthode de Newton amortie.

    Bon courage.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Les équations implicites de la forme h(x, f(x))=0.
    Les deux grandes méthodes classiques d'ordre quelconque pour détermminer le zéro d'une fonction sont :
    - la méthode de Householder
    - la méthode de Schröder
    Les méthodes de Newton-Raphson (ordre 2) ou de Halley (ordre 3) en sont des cas particuliers.
    Ces méthodes donnent surtout d'excellents algorithmes pour déterminer les fonctions algébriques en un temps de l'ordre de la multiplication.

  14. #14
    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 Système équations non linéaires
    J'ajouterais peut-être encore que ces méthodes sont itérative et qu'il importe de bien choisir les valeurs initiales sous peine d'avoir un temps de calcul prohibitif, d'avoir des itérations qui ne convergent pas ou de tomber sur une solution qui n'est pas la bonne, car il y en a souvent plusieurs.

    Jean-Marc Blanc

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    et je rajouterais (dépendamment du nombre d'inconnues/nombre d'équations), la méthode du Simplex...

  16. #16
    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,
    Citation Envoyé par souviron34 Voir le message
    et je rajouterais (dépendamment du nombre d'inconnues/nombre d'équations), la méthode du Simplex...
    J'ai cru que la méthode du Simplex est utilisée exclusivement en recherche opérationnelle ! Merci pour l'information.

  17. #17
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par smercier2 Voir le message
    Est-ce que "SolvOpt" nécessite l'installation de "Matlab" ?
    Ce qui voudrait dire achat d'une licence ?
    Non, SolvOpt est du pur C. C'est open source mais je ne me souviens pas des termes exacts de la licence.

  18. #18
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par sidahmed Voir le message
    Bonjour,

    J'ai cru que la méthode du Simplex est utilisée exclusivement en recherche opérationnelle ! Merci pour l'information.
    Il existe deux méthodes du simplexe.
    L'une pour l'optimisation linéaire sous contrainte linéaire.
    L'autre pour l'optimisation non différentiable (a priori sans contrainte).

    Le premier est celui de la RO (si tu dis qu'il n'est utilisé "qu'en" recherche opérationnelle, on peut se dire que beaucoup de problèmes relèvent de la recherche opérationnelle...)
    Le second est dans les "numerical recipes" et je pense que c'est celui-ci qu'il faut utiliser.

  19. #19
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Oui, c'est ce que j'ai pensé aussi... mais est-ce que cette methode va converger vers les memes valeurs que "f(x,y)=0 ET g(x,y)=0".

    Dans un cas on va faire intervenir les derivées partielles des fonctions f() et g(), et dans l'autre les derivées partielles de H()=f^2()-g^2(). On risque de créer des nouveaux minima locaux avec la fonction H(), non ?
    Dans mon message, j'utilise H()=f^2()+g^2() et non "-".

    Si H(x,y)=0, il faut que f^2(x,y)=0 et g^2(x,y)=0 cas f^2 et g^2 sont positives. De plus comme H est positive, H(x,y)=0 est un minimum global (donc local également).

  20. #20
    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 : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par FrancisSourd Voir le message
    Dans mon message, j'utilise H()=f^2()+g^2() et non "-".
    oups. erreur de typo... il fallait bien sur lire un "+" dans mon post.

    Si H(x,y)=0, il faut que f^2(x,y)=0 et g^2(x,y)=0 cas f^2 et g^2 sont positives. De plus comme H est positive, H(x,y)=0 est un minimum global (donc local également).
    oui, je comprend bien que la solution H(x,y)=0, implique f(x,y)=0 ET g(x,y)=0.

    Je me pose juste le probleme de la stabilité des algorithmes qui utilisent les dérivées partielles pour trouver x et y.

Discussions similaires

  1. [Débutant] Résolution d'un système d'équations non-linéaires
    Par nicollivier dans le forum MATLAB
    Réponses: 9
    Dernier message: 09/12/2009, 17h32
  2. Réponses: 0
    Dernier message: 01/10/2008, 15h14
  3. Réponses: 1
    Dernier message: 22/05/2008, 13h56
  4. Résolution d'équation non-linéaire
    Par progmatho dans le forum Simulink
    Réponses: 1
    Dernier message: 20/02/2008, 11h26
  5. Réponses: 1
    Dernier message: 14/02/2007, 11h12

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