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 :

optimisation equation différentielle


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut optimisation equation différentielle
    bonjour tous;
    j'ai un problème d'optimisation d'un système d'équation différentielle avec paramètre et je n'ai pas réussi, pouvez vous m'aider?
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    function Estimates = fitcurvedemos
     
     
    % Define function and starting point of fitting routine.
    fun = @exp;
    Starting = rand(1, 4);
    load donnee.txt;
    t=donnee(:,1);
    ym1=donnee(:,2);
    ym2=donnee(:,3);
     
     
     
     ym=[ym1 ym2];
     % Now, we can call FMINSEARCH:
     options = optimset('fminsearch'); % Use FMINSEARCH defaults
     Estimates = fminsearch(fun, Starting, options, t, ym);
    function sse = exp(t, y);
     
    load donnee.txt;
    t=donnee(:,1);
    y01=donnee(1,2);
    y02=donnee(1,3);
    Options=odeset('RelTol',1e-4,'AbsTol',1e-4*ones(2,1));
    [t,y] = ode45(@expfunn, t, [y01 y02],options);
    y1 = y(:,1)
    y2 = y(:,2)
    sse = sum((ym1-y1).^2)+sum((ym2-y2).^2)
    function ypoint = expfunn(params, t, ym, y)
    global mumax ks kd yh y
     
     
    mumax=params(1); %pars(1)
    ks=params(2); %pars(2)
    kd=params(3); %pars(3)
    yh=params(4); %pars(4)
     
    ypoint(1)=((mumax*(y(2)/(y(2)+ks)))-kd)*y(1);
    ypoint(2)=-(mumax/yh)*(y(2)/(y(2)+ks))*y(1);
    ypoint=ypoint';

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Au vu de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Estimates = fminsearch(fun, Starting, options, t, ym);
    tu fais passer tes arguments supplémentaires par la fonction fminsearch, mais tu oublies le premier paramètre passé par cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function sse = exp(x,t, ym);
    Le chargement de ton fichier sera alors inutile dans la fonction exp.

    Pense à renommer ta fonction exp autrement: c'est déjà une fonction MATLAB. Voir ce message.

    Ensuite lis attentivement Que représente le symbole @? en ce qui concerne le passage des paramètres t et ym à ta fonction expfunn.

Discussions similaires

  1. Equation différentielle
    Par samwe dans le forum Fortran
    Réponses: 5
    Dernier message: 03/02/2009, 18h12
  2. Equation différentielle non lineaire
    Par polal2is dans le forum MATLAB
    Réponses: 7
    Dernier message: 04/12/2008, 17h41
  3. comment trouvé les racines d'une equation différentielle
    Par samplaid dans le forum Mathématiques
    Réponses: 4
    Dernier message: 05/11/2007, 16h53
  4. Equation différentielle du second ordre
    Par moustiqu3 dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/05/2007, 09h38

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