[exo] Simulation d'un mouvement brownien avec le logiciel R
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

[exo] Simulation d'un mouvement brownien avec le logiciel R



  1. #1
    alison89

    [exo] Simulation d'un mouvement brownien avec le logiciel R


    ------

    J'ai
    [S(t)= S(0)*exp(0.06t+0.20*w(t))]
    avec [S(0)=20]
    w(t)= mouvement brownien standard

    La question est la suivante: simuler 5 trajectoires discrétisées de ce processus sur une periode de 3 ans en
    utilisant un pas de discrétisation journalier.

    [ t <- seq(0,900,length=901)
    pas <- 1

    w = function(t,pas=1)
    {c(0,cumsum(rnorm(length(t)-1,sd=sqrt(pas))))}
    Br <- 20*exp(0.06*t +0.20*w)

    plot(t,Br,type="l",xlab="Temps ")]

    voilà ce que j'ai fait et R me renvoi
    Erreur dans 0.2 * w : argument non numérique pour un opérateur binaire

    je suppose que c'est parce que mon w est une fonction
    mais je ne sais pas comment résoudre ce probleme.

    J'ai besoin d'aide.

    Merci

    -----

  2. #2
    Loupsio

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    Bonjour,
    n'étant pas mathématicien, ca ne va pas etre très pratique car je ne vois pas ce que tu veux faire, mais on va essayer de voir juste avec la structure R

    premièrement, utilise les balise de code pour mettre ton code, ce sera plus propre et plus simple a lire.

    le fait est qu'il ne peut pas faire un calcul sur "w" car "w" est binaire, et en regardant "w", il se trouve que c'est en fait une fonction, et juste après ta declaration de fonction, tu fait
    Code:
    Br <- 20*exp(0.06*t +0.20*w)
    tu ne peux pas multiplier 0.20 par une fonction, ou alors il faut que tu mette des arguments a "w" (le fameux "t" qui est attendus), et vu que dans la fonction tu utilise un "length" j'en déduis que "t" doit être un vecteur non?

    il te faudrait quelque chose de ce gout la je pense :
    Code:
    w <- function(t,pas=1){
    c(0,cumsum(rnorm(length(t)-1,sd=sqrt(pas))))
    }
    monExemple<- c(1,2,3,4,5,6,7,8,9)
    Br <- 20*exp(0.06*monExemple +0.20*w(monExemple))
    
    plot(t,Br,type="l",xlab="Temps ")]
    Tu obtiens une droite dont chaque point a pour abscisse et ordonnée les mêmes valeurs, je sais pas si c'est ce que tu devais obtenir, mais pas d'erreur de lancement en tout cas

    Bonne chance

  3. #3
    Loupsio

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    Je n'avais pas vu que ton "t" etait deja défini quelques lignes au dessus
    ton code doit donc ressembler a ca :
    Code:
    t <- seq(0,900,length=901)
    
    w = function(t,pas=1){
    c(0,cumsum(rnorm(length(t)-1,sd=sqrt(pas))))
    }
    Br <- 20*exp(0.06*t +0.20*w(t))
    
    plot(t,Br,type="l",xlab="Temps ")
    il falait juste lui rajouter dans le calcul qui fait appel a la fonction, la variable sur lequel tu applique la fonction "w"

  4. #4
    alison89

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    Merci pour votre réponse.

    Pouvez vous m'aider a faire une boucle for avec ce code

    t <- seq(0,900,length=900)
    length(t)
    v = matrix(rnorm(log(20)+0.06*t,sd =sqrt((0.20)^(2)*t)))
    z = matrix(NA, ncol=900, nrow=5)
    w = function(t)
    {c(cumsum(v))}
    length(w(t))
    Bn <-matrix(log(20)+ 0.06*t +0.20*w(t))
    Br <- log(Bn)
    plot(t,Br,type="l",xlab="Temps ")
    mean(Br)
    for (i in 1:5) # I need to draw 5 path of the function(1)
    {z[i,] = c(cumsum(Br[i,]))}
    plot(t,z[1,],xlab="temps",type="l",ylab="M ovement Brownian")



    ceci est faux vu que ça repete 5 fois la meme chose. Alors que ça devrait changer.

  5. A voir en vidéo sur Futura
  6. #5
    Loupsio

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    Citation Envoyé par Loupsio
    premièrement, utilise les balise de code pour mettre ton code, ce sera plus propre et plus simple a lire.
    vraiment faites le s'il vous plait, elles sont la pour ca,
    quand tu copie-colle ton code ici, il suffit de le surligner et d'appuyer sur le bouton qui ressemble a un "#" dans les options au dessus de la zone de texte, ou sinon, d'écrire "CODE" au tout debut de ton code et en remplacant les guillemets par des crochets ([ ]) , et "/CODE" a la fin de ton code, toujours en remplacant les guillemets par des crochets [ ] ;

    Et il serait sympa d'expliquer un peu votre code, pas facile de s'y retrouver dans ce que vous voulez faire sans un peu d'explications

    tu dis que ca répète 5 fois la même chose et que ca devrait pas, mais ton "z" est une somme cumulée de Br[i,], sauf que Br est un tableau a une colonne, faire un cumsum de Br[i,] reviens a ne prendre que la valeur de Br[i,] (une valeur unique) tu ne fais pas de somme la dedans,
    je vois pas bien ce que tu veux faire, mais au final tu te retrouves avec pour chaque valeur de i dans la boucle, 900 colonnes strictement identiques puisque tu ne fais pas de sommes mais tu met la meme valeur de Br dans chacune de tes colonnes
    (les valeurs 1 a 5 de Br)
    ducoup tu te retrouves avec un "z" de 5 lignes différentes mais dont les 900 colonnes de chacunes sont identiques

    bref sachant que ton code ne représente pas ce que tu veux faire, et que je ne sais pas ce que tu veux faire, je peux pas t'aider plus sans explications de ta part

  7. #6
    alison89

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    Code:
    t <- seq(0,900,length=900) 
    length(t)
    v = matrix(rnorm(log(20)+0.06*t,sd =sqrt((0.20)^(2)*t)))
    z = matrix(NA, ncol=900, nrow=5)
    w = function(t)
    {c(cumsum(v))}
    length(w(t))
    Bn <-matrix(log(20)+ 0.06*t +0.20*w(t))
    Br <- log(Bn)
    plot(t,Br,type="l",xlab="Temps ")
    ce code dessine une courbe et à chaque fois qu'on le relance,la courbe est differente. J'aimerai avoir 5 courbes de ce code sur un meme graphe et dessine la moyenne de ces courbes.
    Mais j'obtiens juste 5 droites horizontales.
    Dernière modification par alison89 ; 01/11/2015 à 15h59.

  8. #7
    Loupsio

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    Si je resume, tu veux faire 5 "modèles" différents et aléatoires ayant la meme formule, suivant la meme loi ? (un truc du genre... pas sur du vocabulaire ^^)


    quelque chose comme ceci ? :
    Code:
    t <- seq(0,900,length=900) 
    par(mfrow=c(2,3))
    for (i in 1:5){
    v = matrix(rnorm(log(20)+0.06*t,sd =sqrt((0.20)^(2)*t)))
    z = matrix(NA, ncol=900, nrow=5)
    Bn <-matrix(log(20)+ 0.06*t +0.20*c(cumsum(v)))
    Br <- log(Bn)
    plot(t,Br,type="l",xlab="Temps ")
    print(i)
    }
    ou comme ceci ? :
    Code:
    t <- seq(0,900,length=900) 
    for (i in 1:5){
    v = matrix(rnorm(log(20)+0.06*t,sd =sqrt((0.20)^(2)*t)))
    z = matrix(NA, ncol=900, nrow=5)
    Bn <-matrix(log(20)+ 0.06*t +0.20*c(cumsum(v)))
    Br <- log(Bn)
    plot(t,Br,type="l",xlab="Temps ",col=i,ylim=c(0,4.5))
    par(new=T)
    print(i)
    }
    ou pas du tout?
    Dernière modification par Loupsio ; 01/11/2015 à 16h26.

  9. #8
    alison89

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    comment avoir ce cinq courbes dans un seul graphe

  10. #9
    Loupsio

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    Bah je sais pas... si tu me disais en quoi les deux codes proposés te conviennent pas, jpourrais ptet comprendre ce que tuveux...
    les deux presentent le tout dans une seule image, le premier une image avec 5 graphes,
    et le deuxieme un seul graphe avec tes 5 courbes et une couleur différente pour chacune.
    si il n'y en a pas un des deux qui colle a la definition "les 5 dans un seul graphe" pour toi, je vois pas ce que ca signifie pour toi

  11. #10
    alison89

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    Je ne suis pas doué avec R et c'est vrai le second represente exactement ce que je voulais.


    Merciiiiiiiiiiiiiiiiiiiiiiiiii iiiii

  12. #11
    Loupsio

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    De rien,
    Tu disais que tu voulais aussi qu'il te fasse la moyenne
    dans ce cas il faut enregistrer chaque "Br", par exemple en créant un tableau vide a 6 colonnes et 900 lignes, et ou chaque itération de la boucle ca enregistre le nouveau Br dans une nouvelle colonne
    vu que ta boucle fais 5 tours, tu auras 5 colonnes, et ensuite la 6eme colonne tu la remplie en faisant la moyenne des 5 premières colonnes pour chaque ligne

    Bonne chance

  13. #12
    minushabens

    Re : [exo] Simulation d'un mouvement brownien avec le logiciel R

    L'erreur signalée au début vient de ce que w est défini comme une fonction. On ne peut pas multiplier une fonction par 0.2 Il faut faire 0.2*w(1:10) par exemple.

Discussions similaires

  1. Mouvement brownien ?
    Par invite166692b6 dans le forum Chimie
    Réponses: 2
    Dernier message: 31/08/2011, 23h31
  2. mouvement brownien
    Par membreComplexe12 dans le forum Physique
    Réponses: 4
    Dernier message: 23/06/2010, 14h51
  3. mouvement brownien
    Par tenocnoc dans le forum Physique
    Réponses: 18
    Dernier message: 17/11/2009, 14h54
  4. Le Mouvement Brownien
    Par invite77fec917 dans le forum TPE / TIPE et autres travaux
    Réponses: 2
    Dernier message: 08/02/2006, 20h22