%Simulation d'un mouvement brownien multidimensionnel dont les composantes sont corrélées clear all; n = 100 %le nombre de trajectoires simulées m =1000 %le nombre de périodes de temps Delta_t = 0.001 %la longueur d'une période de temps d = 3; %dimension du mouvement brownien multidimensionnel %Matrice de corrélation des mouvements browniens %Nous faisons ici l'hypothèse que la corrélation est constante à travers le temps Gamma = [1 0.2 0.8; 0.2 1 0.5; 0.8 0.5 1] %Matrice servant à la transformation %d'un mouvement brownien donc les composantes sont indépendantes %en un mouvement brownien donc les composantes sont corrélées. %Cette matrice est construite à partir de la décomposition de Choleski %de la matrice de corrélation. choleski_G = chol(Gamma) %Création du vecteur temps temps = zeros(m+1,1); %initialisation for i = 1 : m temps(i+1,1) = temps(i,1) + Delta_t; end %test %Nous permettra de calculer la matrice covariance échantillonnale %du mouvement brownien multidimensionnel au temps m*Delat_t test1 = zeros(n,d); %pour le mouvement brownien non corrélé test2 = zeros(n,d); %pour le mouvement brownien corrélé %Simulation de chaque trajectoire du mouvement brownien multidimensionnel for j = 1 : n %Matrice composée de mxd variables aléatoires iid N(0,1) %Chaque colonne contient les N(0,1) servant à construire une des composantes du brownien Z = normrnd(0,1,m,d); %CRÉATION D'UN MOUVEMENT BROWNIEN AVEC COMPOSANTE INDÉPENDANTES %Initialisation de la matrice contenant les trajectoires du mouvement brownien %Chacune des colonnes de cette matrice contiendra une composante du mouvement brownien %Les composantes du mouvement brownien sont indépendantes entre elles W = zeros(m+1,d); %Approximation du mouvement brownien for i = 1 : m W(i+1,:) = W(i,:) + sqrt(Delta_t)*Z(i,:); end %CRÉATION D'UN MOUVEMENT BROWNIEN AVEC COMPOSANTES CORRÉLÉES Wcorr = zeros(m+1,d); for i = 2 : m+1 Wcorr(i,:) = W(i,:) * choleski_G; end test1(j,:) = W(m+1,:); test2(j,:) = Wcorr(m+1,:); end %trace la dernière trajectoire du mouvement brownien corrélé plot(temps,Wcorr); %calcul des matrices de covariance covarianceW = cov(test1) covarianceWcorr = cov(test2) correlationW = covarianceW / temps(m+1,1) correlationWcorr = covarianceWcorr / temps(m+1,1)