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 :

Minimum d'une fonction


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 65
    Par défaut Minimum d'une fonction
    Bonjour!

    Dans le cas d'un problème couplé, je cherche à identifier le terme source dans l'équation de la chaleur. J'ai utilisé un schéma de discrétisation de Crank-Nicholson. Voilà pour l'intro!
    Je rappelle la forme de l'équation : rho.Cp.(dT/dt)=div(k.grad(T))+Q

    l'expression de Q dans mon cas est : Q= rho*Energie*(d(alpha)/dt) avec alpha qui représente un avancement.

    Le problème, c'est que l'expression de alpha est assez compliquée, et il n'y a pas de solution "simple" pour exprimer alpha à l'instant t+dt. Donc, je souhaite utiliser la fonction fminsearch, (ou une autre, je ne suis pas bornée) sachant que alpha est tjrs compris entre 0 et 1.

    Voila l'expression en code matlab de alpha à l'instant (k+1) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alpha1=3*dt*K*(alpha2-1)(-ln(1-alpha2))^2/3;
    alpha1 est alpha à l'instant k et alpha2 est alpha à l'instant k+1
    dt est mon pas de temps
    K est une fonction qui dépend de la température

    Je connais l'expression de K(T), et je connais la température, du coup, tout devrait rouler, mais je n'arrive pas à écrire bien le bout de code... Pourriez vous m'aider svp?

    Je vous remercie par avance!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Par défaut
    Si j'ai bien compris ton problème, en gros tu as alpha1 en fonction de alpha2, et connaissant alpha1, tu cherches le alpha2 qui permet de l'obtenir, c'est ça ?

    La méthode est de chercher alpha2 tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alpha1-(3*dt*K*(alpha2-1)(-ln(1-alpha2))^2/3)=0
    Une recherche de 0 est en effet plus appropriée qu'une optimisation. On pourrait formuler le problème sous forme d'une minimisation en utilisant une valeur absolue, mais cela pourrait induire une discontinuité des dérivées non souhaitable pour un optimiseur.

    Je te montre un exemple pour résoudre ton problème, sur une fonction moins compliquée. Dans mon cas, connaissant alpha1, je cherche alpha2 qui permet de le retrouver sachant que :
    Le code qui correspond est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    clear all
    close all
     
    % Je définis ma fonction
    myfunc = @(alpha2) (alpha2+3)^2;
     
    % Je définis les grandeur connues
    alpha1=100;
     
    % je cherche ma grandeur inconnue
    alpha2=fzero(@(alpha2)(alpha1-myfunc(alpha2)),0)
    La réponse est bien évidemment 7.

    Sur ce cas simple (et convexe), la recherche de 0 ne pose pas de problème. Dans ton cas, étudie bien ta fonction et choisis de meilleures conditions initiales si tu le peux.

Discussions similaires

  1. Trouver le minimum d'une fonction à 3 variables
    Par QuintusII dans le forum MATLAB
    Réponses: 13
    Dernier message: 08/12/2008, 14h19
  2. Recherche du minimum d'une fonction sur un intervalle
    Par jschutz dans le forum Mathématiques
    Réponses: 6
    Dernier message: 18/03/2008, 14h25
  3. Réponses: 2
    Dernier message: 23/11/2007, 11h33
  4. Réponses: 6
    Dernier message: 21/09/2007, 14h18
  5. Cherche le minimum d'une fonction
    Par yakamone3 dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 06/06/2006, 10h01

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