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 :

Intégrer une formule


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Intégrer une formule
    Bonjour à tous.

    Je sais que cela est un basique pour vous, mais c'est tout une montagne quand on y a jamais touché. Alors j'explique mon soucis, je dois intégrer dans matlab une fonction :

    P(n) = XP(n−1) − XP(n−1)² = XP(n−1)[1 − P(n−1)]

    Sachant que Pn est le prix à la date n qui sera fonction du prix à la date n-1 et du paramètre X.

    Ce que je dois faire est de reproduire cette fonction et de faire varier plusieurs X pour voir ce qu'il se passe graphiquement, et tout ça dans Matlab.

    Je n'ai aucune idée de comment je peux réaliser cela, peut etre pourriez vous me guider.


    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,

    Il suffit de procéder par étape et la première est de maitriser un minimum MATLAB. Pour cela il y a les faq/tutoriaux du site, le forum, la doc de MATLAB et tout ce que tu pourras trouver sur le net.

    Une fois que c'est fait, tu peux commencer à faire des tests et éventuellement à demander de l'aide sur le forum si tu es bloqué.
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonsoir,

    Évidemment je n'attends pas une réponse toute crue filée gratuitement, juste des orientations, j'ai commencé à travailler dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Xt = 0.1;
    t = 1;
    n = 30; 
    a = 3.5;
    while t<=n 
        Z = a*Xt*(1-Xt)
        t = t + 1
    end
    Le soucis, c'est que maintenant les futurs résultats de Xt ne sont pas stockés et donc ne peuvent pas apparaitre via un graphique, pourrais-tu me conseiller...?

    Je lis des tutoriaux, et j'ai du mal avec la fonction PLOT qui ne génère pas tous les résultats de ma boucle Xt !

    Merci

  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
    Pour stocker les différentes valeurs, il suffit d'utiliser un tableau. Petite remarque : les indices des tableaux commencent à 1.
    Et plutôt qu'utiliser une boucle while, préfère une boucle for lorsque tu connais les bornes de tes itérations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Z(1) = 0.1;
    n = 30; 
    a = 3.5;
    for t=2:n 
        Z(t) = ...
    end
    je pense que tu devrais voir maintenant comment construire Z(t)
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci de ton attention pour mon post.

    Pourquoi préférer For à While ? For a plus d'utilité pour une boucle que While ?

    Alors maintenant, finalement, je dois tout stocker dans un vecteur à 1 ligne et n colonne's'.

    Quand j'ai commencé à le faire hier soir j'ai tenté ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Xt = 0.1;
    t = 1;
    n = 30; 
    a = 3.5;
    while t<=n 
    Xt = a*Xt*(1-Xt);
    t = t + 1;
    B=[Xt]
    end
    plot(t,Xt)
    Le soucis étant que dans cette méthode la machine comprend qu'à chacune des itérations, il doit faire une matrice, alors ce que je devrais faire c'est stocker le résultat de chacune des itérations obtenues.

    Dans VBA, on pouvait stocker les valeurs dans excel ce qui rendait la tache facile. Ici, il faudrait que trouver un tableau dans l'itération qui se met à jour.

    Comment formuler le B=[Xt] d'une autre manière.

    Auriez vous une piste ?

    Merci

  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
    Citation Envoyé par 1ma91nat10n Voir le message
    Pourquoi préférer For à While ? For a plus d'utilité pour une boucle que While ?
    As-tu remarqué que la boucle for supprime 2 lignes (l'initialisation et l'itération) et que si tu oublies d'itérer ta variable qui te permet de sortir de ta boucle while, tu risques de te retrouver avec une boucle infinie. Personnellement j'évite au maximum les boucles while sauf pour les cas ou je ne peux pas faire autrement.


    Citation Envoyé par 1ma91nat10n Voir le message
    Alors maintenant, finalement, je dois tout stocker dans un vecteur à 1 ligne et n colonne's'.

    Quand j'ai commencé à le faire hier soir j'ai tenté ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Xt = 0.1;
    t = 1;
    n = 30; 
    a = 3.5;
    while t<=n 
    Xt = a*Xt*(1-Xt);
    t = t + 1;
    B=[Xt]
    end
    plot(t,Xt)
    Le soucis étant que dans cette méthode la machine comprend qu'à chacune des itérations, il doit faire une matrice, alors ce que je devrais faire c'est stocker le résultat de chacune des itérations obtenues.

    Dans VBA, on pouvait stocker les valeurs dans excel ce qui rendait la tache facile. Ici, il faudrait que trouver un tableau dans l'itération qui se met à jour.

    Comment formuler le B=[Xt] d'une autre manière.
    Dans ton code pour le moment je ne vois que des scalaires (un nombre unique par variable), pourquoi parles-tu de matrice?
    As-tu bien lu mon post précédent? Je parle justement de tableaux pour stocker tes valeurs...
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Est ce que avec le tableau je pourrais tendre vers ça
    http://hpics.li/57b346a (lien image)


    Cordialement

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Rebonjour,

    Vous pensez que si ma formule se transforme comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    X=[0, 10/9, 2.5, 3, 3.999, 4.5];
    N=lenght[X];
    P(:,1)=0.5;
       For n=1:5;
          For t=1:75;
          P(n,t+1)=X(n)*P(n,t)*[1-P(n,t)];
          end
        end
    Une fois que j'ai réussi à vraiment comprendre ma partie de calcul, j'aimerai générer de jolies graphiques comme dans ma photo (lien image).


    http://hpics.li/57b346a

    PS: je n'arrive pas à trouver comment générer une tableau 2D qui stockerait mes résultats dans ma premières méthodes !!

    si quelqu'un aurait un exemple à me donner je saurais enchanté !

    c'etait pour le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Xt = 0.1;
    t = 1;
    n = 30; 
    a = 3.5;
    while t<=n 
        Z = a*Xt*(1-Xt)
        t = t + 1
    end

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    ReReRe Bonjour,

    J'avance à pas de souris, mais j'avance:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    X=[0, 2.5];
    P(:,1)=0.1;
    N=length(X);
     
    for n=1:N
        for t=1:10
        P(n,t+1)=X(n)*P(n,t)*[1-P(n,t)];
        end
    end
    plot(t,P)
    Lorsque j'écris le code ci dessus, la machine me répond:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ??? ??? Attempted to access P(2,1); index out of bounds because
         |
    Error: Unexpected MATLAB operator.
    Je dois avouer que je suis pas mal dépourvu, je ne vois pas pourquoi ma boucle ne fonctionne pas !

    PS: j'ai regardé la faq des erreurs, et ça n'y est pas...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par 1ma91nat10n Voir le message
    PS: j'ai regardé la faq des erreurs, et ça n'y est pas...
    C'est que tu n'as pas bien regardé
    Attempted to access variable(n); index out of bounds because numel(variable)=(n-1). qui te renvoie vers Index exceeds matrix dimensions.

    Un indice: regarde ce que contient P après la ligne P(:,1)=0.1;.
    Une autre remarque: ne serai-ce pas P(n) en fonction de P(n-1) ?

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Re,

    Bon j'ai cerné le problème, c’était du à l'initialisation, il ne comprenait pas (moi non plus apparemment) le début de ma fonction :

    maintenant j'ai viré : P(:,1)=0.1; pour ça : P = 0.1 * ones(N,11);.

    C'est drôle on a posté en même temps, en effet, j'avais merdé sur la dimension de ma matrice, le soucis que j'ai là est différent.. comme vous pouvez le lire au dessus.

    Quant à ta deuxième remarque, nan, c'est bien P(T+1) fonction de P(T)
    N ne fait que varier mon indice (rapidité...) c'est mon paramètre que je dois modifier en output... pour regarder ce qu'il se passe !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 15/04/2015, 16h55
  2. [XL-2003] Intégrer une formule en VBA
    Par Maiden002 dans le forum Excel
    Réponses: 9
    Dernier message: 04/08/2009, 11h58
  3. [TStringGrid] intégrer une ComboBox
    Par AnneOlga dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/10/2004, 15h46
  4. Réponses: 6
    Dernier message: 30/08/2004, 15h48
  5. problème de guillemets dans une formule shell
    Par dim_italia dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/08/2003, 12h46

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