// Mouvement brownien 1D // D.LEFEBVRE Scientific programming 12 septembre 2012 // clear; //paramètres de simulation T=1; // la simulation est produite sur l'intervalle temporel [0,1] N=500; //nombre de pas temporels M=3000; //nombre de trajectoires browniennes simulées // initialisation des vecteurs de calcul temps = (T/N)*[0:N]'; MB(1:M,1)=zeros(M,1); // initialisation du vecteur brownien // calcul d'un vecteur de données aléatoires réparties selon une distrib gaussienne de moyenne nulle et d'écart type sqrt(T) bruit = grand(M,N,"nor",0,sqrt(T)); // simulation de la marche aléatoire for k=2:N+1, MB(:,k) = MB(:,k-1)+sqrt(T/N)*bruit(:,k-1); end; // Tracé des trajectoires d'une marche aléatoire xset('window', 1); clf(); plot2d(temps, MB(1,:)); xtitle('Simulation du mouvement Brownien'); //Histogramme des valeurs terminales comparé à une gaussienne de variance T xset('window', 2) clf(); x=-4:0.1:4; histplot(x,MB(:,$)); // MB(:,$) désigne la valeur terminale de chaque trajectoire plot2d(x,exp(-x^2/(2*T))/sqrt(2*%pi*T),2); // tracé de la gaussienne de moyenne 0 et de variance T xtitle('Distribution des valeurs terminales des trajectoires');