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 :

plot and save sous matlab


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 61
    Par défaut plot and save sous matlab
    bonjour a tous
    j'ai trois problèmes ou questions
    on considère le code suivant par exemple
    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
    42
    43
     
    x1=-1.2;    %point de départ imposé par mon énoncé: 
    y1=1;        %   P=[-1.2,1]
    T=70;
    RepetitionTfixe=0;  %compteur à zéro
    xbest=-1.2;          % la meilleur solution est pour l'instant le pt de départ
    ybest=1;
    n=4;
     
    while(T>0.01)
     
        while(RepetitionTfixe<50)
     
            x2= x1 + ( (rand(1,1)-rand(1,1))*n);     %recherche d'un point voisin
            y2= y1 + ( (rand(1,1)-rand(1,1))*n);
            Delta=Rosenbrock(x2,y2)-Rosenbrock(x1,y1);  %calcul du delta
     
            if Delta<0
                x1=x2;
                y1=y2;
                Gamma=Rosenbrock(xbest,ybest)-Rosenbrock(x1,y1);
                if Gamma>0
                    xbest=x1;
                    ybest=y1;
                end
     
            else
                p=rand(1,1);    % on tire aléatoirement p entre 0 et 1
                if p< exp(-Delta/T)  % critère de metropolis
                    xbest=x2;           % on sauve les valeurs 
                    ybest=y2;
     
                end
            end	
            RepetitionTfixe=RepetitionTfixe+1;  
        end
        T=0.99*T;  % une méthode parmi d'autre de "cooling schedule"
        n=0.99*n;   % on diminue l'intervalle de recherche du point voisin
        RepetitionTfixe=0;  % remise à zéro du compteur une fois les 50 répétitions
    plot(T,f_best)
    end
     
    [Rosenbrock(xbest,ybest) xbest ybest]
    où la fonction rosenbrock est(f(x,y)=100 (x²-y)²+(1-x)²)
    1- je veux réécrire le code avec la notation f(x1,x2), ci facile mais pour moi je trouve le du conditions initiales est ce que je peut ecrire x11=-1.2 et x21=1 au lieu de x1=-1.2,y1=1.
    2- je veux ploter dans la meme fenetre ( graphe) la courbe de ce code avec la courbe un autre code.
    3-je trouve les resultats (lors de la repetitions du pro)par exemple
    ans=
    1 2 3
    ans=
    4 5 6
    ans=
    7 8 9
    ans=
    ........
    50 run
    je veux sauvgarder tou ci resultat dans tableau quelle est la cammande
    et merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    Salut,

    Pour répondre à tes questions :

    Tu peux très bien écrire x11 et x21 pour définir tes variables. Tu peux mettre le nom que tu veux du moment que tu fais bien toutes les modifications dans ton code.

    Pour avoir sur un même graphe plusieurs courbes, tu peux utiliser hold.

    Pour sauvegarder le résultat tu peux regarder du côté des fonctions de sauvegarde

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    help dlmwrite
    help fprintf
    % etc ....
    Quelques remarques :

    Pense à indenter ton code Ctlr+A et Ctrl+I.
    Ca permet de voir un peu mieux ce que tu fais.
    f_best n'est jamais défini dans ton code également. Tu dois donc avoir une erreur pour cette ligne là.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 61
    Par défaut
    merci
    donc je peux l'ecrire comme ca
    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
    42
    43
    44
    x11=-1.2;    %point de départ imposé par mon énoncé: 
    x21=1;        %   P=[-1.2,1]
    T=70;
    RepetitionTfixe=0;  %compteur à zéro
    xbest=x11;          % la meilleur solution est pour l'instant le pt de départ
    ybest=x21;
    n=4;
     
    while(T>0.01)
     
        while(RepetitionTfixe<50)
     
            x12= x11 + ( (rand(1,1)-rand(1,1))*n);     %recherche d'un point voisin
            x22= x21 + ( (rand(1,1)-rand(1,1))*n);
            Delta=Rosenbrock(x12,x22)-Rosenbrock(x11,x21);  %calcul du delta
     
            if Delta<0
                x11=x12;
                x21=x22;
                Gamma=Rosenbrock(xbest,ybest)-Rosenbrock(x11,x21);
                if Gamma>0
                    xbest=x11;
                    ybest=x21;
                end
     
            else
                p=rand(1,1);    % on tire aléatoirement p entre 0 et 1
                if p< exp(-Delta/T)  % critère de metropolis
                    xbest=x12;           % on sauve les valeurs 
                    ybest=x22;
     
                end
            end	
            RepetitionTfixe=RepetitionTfixe+1;  
        end
        T=0.99*T;  % une méthode parmi d'autre de "cooling schedule"
        n=0.99*n;   % on diminue l'intervalle de recherche du point voisin
        RepetitionTfixe=0;  % remise à zéro du compteur une fois les 50 répétitions
    plot(RepetitionTfixe,Rosenbrock(xbest,ybest)) hold on
    end
     
    xbest
    ybest
    Rosenbrock(xbest,ybest)
    j'ai rajouter plot(RepetitionTfixe,Rosenbrock(xbest,ybest)) hold on
    la camnnde
    plot(plot(RepetitionTfixe,(xbest,ybest)) ne marche pas avec moi
    je veux ploter les points (xbest,ybest) en fonction de nombre d'iteration
    merci

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    Juste pour rappel, quand tu postes un message, utilise la balise code, sinon on ne s'en sort pas.

    Tu peux en effet modifier ton code comme tu l'as fait.

    Pour la représentation graphique, si tu veux afficher les points (xbest,ybest) pour chaque ittération, je te conseillerai d'utiliser la commande scatter. Ton code actuel affiche le rosenbrock de tes meilleurs points pour chaque ittération.


Discussions similaires

  1. [Débutant] plot 3D sous matlab
    Par nina02 dans le forum MATLAB
    Réponses: 1
    Dernier message: 26/05/2011, 21h38
  2. [Débutant] Probleme de generation tables [plot] sous Matlab
    Par bahja29 dans le forum MATLAB
    Réponses: 10
    Dernier message: 06/03/2009, 14h02
  3. look and feel sous eclipse
    Par ejaub dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 04/11/2005, 12h04

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