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 :

simuler la moyenne d'un processus de diffusion


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Points : 12
    Points
    12
    Par défaut simuler la moyenne d'un processus de diffusion
    Bonjour,

    j'ai un process de diffusion dont la moyenne est nonlineaire de la forme:
    mu(dt) = (alpha1+alpha2*x+alpha3*(x2)+alpha4/x) dt

    je veux simuler cette moyenne j'ai alors fait le programme suivant
    mais j'obtient un graphique vide

    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
    clf
    load TRB.txt				% Load Data
     
    X = TRB(1:T,1)/100;
    T = rows(TRB);
     N = 2087; Delta = 1/T;           
    % simulation du processus de CIR-SR
    alpha1 = -4.0224; alpha2 = 0.08893; alpha3 = -0.0608; alpha4 = 7.1945;  
     
    for X = 1:T
     
        mu = (alpha1 +alpha2*X + alpha3*(X^2) + alpha4/X)* Delta;
    plot(X,mu);
     
    end


    est ce que vous pouvez me dire où est le problème.

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    en fait ton graphique n'est pas totalement vide : il contient les points que tu traces a chaque itération.
    Pour tracer une courbe, il faut stocker les points et afficher la courbe après la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for X = 1:T
        mu(X) = (alpha1 +alpha2*X + alpha3*(X^2) + alpha4/X)* Delta;
    end
    plot(1:T,mu);
    Par contre c'est normal que tu définisses X puis que tu l'utilises aussi comme variable d'itération? J'ai l'impression que tu souhaites faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for k = 1:T
        mu(k) = (alpha1 +alpha2*X(k) + alpha3*(X(k)^2) + alpha4/X(k))* Delta;
    end
    plot(X,mu);
    non?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    Merci pour la rectification mais bizarre le graphique qui apparait reste toujours vide. Comment faire apparaitre la courbe?

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    As-tu regardé ce que tu obtiens dans le vecteur mu?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    non comment faire, rien ne m'apparait

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Déjà essaie de faire :
    clear all
    close all
    puis relances ton programme.

    Si il n'y a toujours rien qui s'affiche :
    pour afficher mu, si il ne contient pas beaucoup de valeurs, tu peux faire dans la fenêtre de commande :
    ou bien double-clic sur son nom dans la fenêtre nommée Workspace.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    j'ai changer le programme comme suit:
    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
    clear all
    clf
    load TB3S.txt				% Load Data
    T = rows(TB3S);
    		
    x = TB3S(1:T,1)/100;
    x0 = 0.081;
    x = zeros(T,1);
     N = 2087; Delta = 1/N;         
    %simate the ait sahalia drift
    alpha1 = 0.006; alpha2 = 0.0721; alpha3 = 0.141; alpha4 = 0.0003;  
    x0 = 0.081;
    x = zeros(T,1);
    x(1) = x0;
    for k = 1:T
        mo(k) = (alpha1 +alpha2*x(k) + alpha3*(x(k)^2) + alpha4/x(k))* Delta;
    end
    plot(1:T,mo);
    close all
        
    mais le problème persiste le graphique apparait vide et le vecteur mo apart la première valeur , toutes les valeurs sont inf. je ne sais pas où est le problème

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    As-tu regardé les valeurs contenues dans x? Elles te paraissent correctes? Une division par 0 donne Inf par exemple...
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    je ne sais pas si c'est ça le probleme mais remplace ceci:

    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    figure (1)
    hold on
    plot(1:T,mo);

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    je ne sais pas si c'est ça le probleme mais remplace ceci:

    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    figure (1)
    hold on
    plot(1:T,mo);
    Je ne vois pas bien le rapport avec le problème de mounabs?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    je me suis dit que ses points n'apparaiseent pas car il a peut etre ecrasé un précédent graphique ou un truc dans ce genre. Je voulias juste verifier que ça soit pas un probleme dans ce genre...

  12. #12
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Non, les point n'apparaissent pas car :
    Citation Envoyé par mounabs Voir le message
    e vecteur mo apart la première valeur , toutes les valeurs sont inf.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  13. #13
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    bonjour:
    le code est devenu comme suit:
    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
    clf
     
     load TB3S.txt % read your data here: create a vector x where x(1) = first observations, x(n) = last observations
    T = rows(TB3S);			% nb. obs.
    x = TB3S(1:T,1)/100;
     
     Delta = 1/T;
     % simulation du processus de CIR-SR
     alpha1 = 0.0143; alpha2 = -0.0006; alpha3 = -0.0136; alpha4 = 0.0003;  
     
    for i = 1:T
     
    drift(i) = (alpha1 +alpha2*x(i) + alpha3*(x(i)^2) + alpha4/x(i))* Delta;
     plot(x(i),drift(i));
     hold on;
     
    end
     
    hold off;
    la figure apparait mais pas assez lisible pourquoi?

  14. #14
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    As-tu compris ce que j'ai écris dans ce précédent message :
    Citation Envoyé par magelan Voir le message
    Pour tracer une courbe, il faut stocker les points et afficher la courbe après la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for X = 1:T
        mu(X) = (alpha1 +alpha2*X + alpha3*(X^2) + alpha4/X)* Delta;
    end
    plot(1:T,mu);
    ?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  15. #15
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    clf
     
     load TB3S.txt 
     x = TB3S(1:T,1)/100;
    avec x(1) = première observation, x(n) = dernière observation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    T = rows(TB3S);			% nb. obs.
     
     Delta = 1/T;
    valeurs initiales
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alpha1 = 0.0143; alpha2 = -0.0006; alpha3 = -0.0136; alpha4 = 0.0003;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for X = 1:T
        mu(X) = (alpha1 +alpha2*X + alpha3*(X^2) + alpha4/X)* Delta;
    end
    plot(1:T,mu);
    ici le X doit être les valeur dans le vecteur TB3S.txt de la première valeur jusqu'à la dernière.
    comment faire

  16. #16
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Par rapport à ton code du post #13, il suffisait juste de sortir le plot :
    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
    clf
     
    load TB3S.txt % read your data here: create a vector x where x(1) = first observations, x(n) = last observations
    T = rows(TB3S);			% nb. obs.
    x = TB3S(1:T,1)/100;
     
     Delta = 1/T;
     % simulation du processus de CIR-SR
     alpha1 = 0.0143; alpha2 = -0.0006; alpha3 = -0.0136; alpha4 = 0.0003;  
     
    for i = 1:T
     
    drift(i) = (alpha1 +alpha2*x(i) + alpha3*(x(i)^2) + alpha4/x(i))* Delta;
     
    end
    plot(x,drift);
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/05/2013, 11h10
  2. Réponses: 1
    Dernier message: 04/01/2011, 16h24
  3. simulation d'une file d'attente de processus?
    Par ilias20 dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 27/03/2010, 09h30
  4. Réponses: 11
    Dernier message: 30/09/2008, 20h52
  5. Simulation processus de Markov
    Par louis_sadaka dans le forum Signal
    Réponses: 2
    Dernier message: 09/10/2006, 10h54

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