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

Algorithmes et structures de données Discussion :

Résolution système linéaire avec contraintes


Sujet :

Algorithmes et structures de données

  1. #1
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut Résolution système linéaire avec contraintes
    Bonsoir,

    Tout d'abord, désolé si la question est triviale ou déjà traitée, j'ai cherché sur le forum mais je n'ai pas vraiment trouvé la réponse à mon problème.

    Je cherche à résoudre une équation : Ax=B avec A matrice (m,n) (m et n quelconques) et x le vecteur inconnu.

    En fonction de m et n, mon système peut être sous-dimensionné ou sur-dimensionné. Les contraintes sont :
    - Toutes les (meilleures) solutions doivent être positives ou nulles (Tous les éléments de x doivent être >=0)
    - La somme des éléments de x doit être égal à 1.

    Je démarre avec OCTAVE et j'aurai souhaité connaitre des pistes ou les fonctions à utiliser pour programmer au mieux la recherche de ces solutions.

    Je vous remercie d'avance.
    Cordialement,

  2. #2
    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!
    Je note 3 points importants dans la formulation de ton problème; je commence par le plus simple:
    La somme des éléments de x doit être égal à 1
    Il te suffit d'ajouter à la matrice A une ligne ne comportement que des 1 et au vecteur B un terme qui vaut aussi 1.

    Ax=B avec A matrice (m,n) (m et n quelconques)
    Si m<n, il y a en général (mais pas toujours) une infinité de solutions. Si m>n, il n'y a en général pas de solution exacte. Dans un cas comme dans l'autre, je te conseille de voir du côté de la décomposition selon les valeurs singulières (SVD).

    Tous les éléments de x doivent être >=0
    Alors, ça, c'est plus compliqué. A mon avis, tu devrais satisfaire tout d'abord les deux premières conditions, puis appliquer une méthode itérative qu'il te reste à imaginer.

    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)

  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
    Les contraintes sur les (x_i) signifient simplement que le vecteur x parcourt l'enveloppe convexe des points (1,0,..,0),(0,1,..,0), ...(0,..,0,1).
    Tu peux voir ce que cela donne en dimension deux (un segment) ou trois (un triangle).
    Maintenant si tu cherches une pseudo-solution à epsilon près tu commences à calculer
    ||A|| = sup_i,j |a_i,j|
    puis tu remarques que si F(X)=AX-B F est lipschitzienne de constante ||A|| de sorte que
    ||X1-X2|| < epsilon/||A||=eta entraîne ||F(X1)-F(X2)||<epsilon.
    Il te suffit ensuit de faire une maillage suffisamment fin de l'enveloppe convexe
    G_n=(h_1, h_2, .... ,h_n) avec tous les h_i positifs et leur somme valant 1 de telle sorte que la distance d'un G_i au G_j le plus proche est inférieure à eta.
    De la sorte tu es sûr que le minimum de F sur l'ensemble FINI des G_i diffère de moins de epsilon du minimum absolu de F sur l'enveloppe convexe.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  4. #4
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Bonjour,

    Je vous remercie pour vos réponses. Mais je débute avec OCTAVE et de plus, je ne pratique pas ce "type" de réflexion fréquemment. J'ai donc un peu de difficulté à exploiter vos pistes
    Pourriez-vous m'orienter vers des pistes un peu plus "opérationnelles" ?
    Merci d'avance.
    Cordialement,

Discussions similaires

  1. Système linéaire avec contraintes
    Par SKone dans le forum Mathématiques
    Réponses: 4
    Dernier message: 17/09/2013, 11h27
  2. Résolution d'équation avec contraintes
    Par ZBour dans le forum MATLAB
    Réponses: 4
    Dernier message: 20/02/2008, 11h26
  3. Résolution système linéaire mais avec paramètre
    Par feynman dans le forum Scilab
    Réponses: 7
    Dernier message: 03/10/2007, 06h55
  4. Vérification de système linéaire, avec tableaux
    Par lenny_ dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 13/06/2006, 17h51

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