%%% Illustration du théorème de Donsker.
clear;
% On veut simuler Y_n
n=1000; 
mint=0; % Valeur maximale de t
maxt=1; % Valeur minimale de t
Dt=80;  % Précision du tracé en t
% Approximation de Y_n
dt=(maxt-mint)/Dt;       % Pas de la subdivision en t 
T=[mint:dt:maxt];        % Subdivision en t de [mint,maxt]
X=rand(1,1+floor(n*maxt)); % Génération des v.a. X_1,...,X_n
X=X-mean(X);             % Centrage empirique (théorique=1/2)
sigma=std(X);            % Sigma empirique (théorique=1/12)
for i=1:Dt,
  Y(i)=sum(X(1:floor(i*T(i))))+(i*T(i)-floor(i*T(i)))*X(1+floor(i*T(i)));
end
Y(Dt+1)=0;
Y=Y/(sigma*sqrt(n)); 
figure
clf;
hold on
plot(T,Y,'r-')
% Approximation au dixième Y_(n/10)
Dt=floor(Dt/10);     % Précision du tracé en t
dt=(maxt-mint)/Dt;   % Pas de la subdivision en t 
T=[mint:dt:maxt];    % Subdivision en t
for i=1:Dt,
  Z(i)=sum(X(1:floor(i*T(i))))+(i*T(i)-floor(i*T(i)))*X(1+floor(i*T(i)));
end
Z(Dt+1)=0;
Z=Z/(sigma*sqrt(n)); 
plot(T,Z,'b-@')
legend('Y(n)','Y(n/10)')
xlabel('t')
ylabel('Yn')
