#test de rnorm rm(list=ls()) Nt<-10000 #Nombre de pas en temps M<-10000 #Nombre d'expériences réalisées nu=0 #Parametre de Drift D=0.1 #Coefficient de diffusion Dt=min( c( 1e-2/abs(nu) , (1e-4/(2*D)) ) ) #Pas en temps Pos=c() #Va contenir les positions finales pour les M expériences #On ne calcul pas à proprement parlé la marche, mais directement la somme #de toutes les itérations. On gagne ainsi en temps de calcul for(i in 1:M) { Pos=c(Pos,nu*Dt*Nt+sqrt(2*D)*Dt*sum(rnorm(Nt,0,1/sqrt(Dt)))) } VM=nu*Dt*Nt #Valeur moyenne ET=sqrt(2*D*Dt*Nt) #Ecart type xborne<-c(VM-5*ET,VM+5*ET) yborne<-c(0,1.2/sqrt(2*pi*ET^2)) #La méthode hist permet de tracer l'histogramme de fréquence des valeurs du tableau Pos #On peut définir le pas d'échantillonage. Breaks correspond au nombre d'échantillons. hist(Pos,freq=FALSE,breaks=50,xlim=xborne,ylim=yborne,border="blue");par(new=TRUE); #La méthode density permet d'obtenir une fonction continue approchant la densité de probabilité #correspondant à la fréquence d'apparition des valeurs dans le tableau Pos. #Le parametre bw (smoothing bandwidth) permet de lisser la distribution. #J'ai arbitrairement pris une fraction de l'écart type. plot(density(Pos,bw=sd(Pos)/10),xlim=xborne,ylim=yborne);par(new=TRUE); #on trace en surimpression la densité de probabilité à laquelle on s'attend x=seq(from=xborne[1],to=xborne[2],by=0.1) plot(x,dnorm(x,VM,ET),xlim=xborne,ylim=yborne,type="l",col = "red");