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 :

Résolution equation à 2 inconnues + condition


Sujet :

MATLAB

  1. #1
    Invité
    Invité(e)
    Par défaut Résolution equation à 2 inconnues + condition
    Bonjour,

    J'aimerais résoudre une équation a 2 inconnues (oui comme ça c'est difficile) mais en rajoutant une condition qui est la minimisation d'un rapport entre ces 2 inconnus.

    En gros je voudrais trouver L et H solution de : L*H/(L+H)= 30, donc là il peut y avoir un paquet de solutions mais je veux retenir juste celle qui minimise L*H et la si j'ai un peu de chance il n'y en a qu'une.

    Le problème, c'est que je ne voit pas comment le programmer, je sais même pas par quoi commencer ... je n'ai jamais joué avec les résolution d'équation dans matlab, je sais pas de quoi il est capable.

  2. #2
    Invité
    Invité(e)
    Par défaut
    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
    function [Lopt,hopt]=optimisation_section(Dh,maxL,maxh,type)
     
    h=linspace(3,maxh,100);
    L=zeros(1,length(h));
    air=zeros(1,length(h));
     
    for i=1:length(h)
        L(i)=Dh*h(i)/(2*h(i)-Dh);
        if L(i)>maxL ||L(i)<0 , L(i)=NaN; end
        air(i)=L(i)*h(i);
    end
     
    save air
    idx=find(air == min(air));
     
    Lopt=L(idx);
    hopt=h(idx);
    Bon j'ai fais ça, ça marche mais bon le résultat est limité à la résolution que je donne au vecteur. Il y a surement plus intelligent chez matlab

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    ou simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    H=[0:100000];  %a modifier
    L=(30*H)./(H-30); %calcul de L tel que LH/(L+H)=30
    prod=L.*H; %calcul de L*H
     
    [m,n]=find(prod(:)==min(prod(:)));
     
    disp('H=');H(n)
    disp('L=');L(n)
    Il faut néanmoins définir un intervalle pour H (ici entre 0 et 100000).

  4. #4
    Invité
    Invité(e)
    Par défaut
    C'est pareil sans la boucle nan ?

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juin 2009
    Messages : 53
    Points : 57
    Points
    57
    Par défaut
    si tu as la toolbox optimisation, il te suffit de créer une fonction (f(L,H) = L*H/ (L+H), par exemple) et utiliser une des fonctions qui trouvent un minimum sous contraintes (par exemple fmincon). Avec cette fonction, tu lui mets des bornes (lb et ub), un point initial et la contrainte non linéaire "f" dans l'emplacement nonlcon à l'aide de @, et piouf , normalement ça marche.
    Tu peux aller voir l'aide, c'est pas mal fait pour cette fonction.

    Si tu as des problèmes d'utilisation, n'hésite pas !!

    bon courage.

  6. #6
    Invité
    Invité(e)
    Par défaut
    effectivement j'ai cette toolbox, je vais regarder

Discussions similaires

  1. [Débutant] algo d'intégration pour résolution equation
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 3
    Dernier message: 15/01/2012, 22h07
  2. Réponses: 5
    Dernier message: 01/04/2010, 08h08
  3. Résolution equations aux dérivées
    Par itismyrabbit dans le forum Mathématiques
    Réponses: 4
    Dernier message: 20/03/2008, 16h16
  4. Réponses: 4
    Dernier message: 19/01/2008, 17h33
  5. (Debutant)Expression inconnue conditions
    Par Domingo60 dans le forum ASP
    Réponses: 2
    Dernier message: 19/04/2007, 14h37

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