/* Brownian Bridge */ new; cls; a=0; /* at tt=0 */ b=1; /* at tt=T */ T=1; n=252; W=bbridge(a,b,T,n); library pgraph; graphset; xy(seqa(0,T/n,n+1),W~a*ones(n+1,1)~b*ones(n+1,1)); proc bbridge(a,b,T,n); local delt,Z,W,tt,BB,i; /* Standard Wiener */ delt=T/n; Z=sqrt(delt)*rndn(n,1); W=cumsumc(Z); /* main */ tt=seqa(1,1,n)/n*T; BB=zeros(n,1); i=1; do while i<=n; BB[i]=a*(1-tt[i]/T)+b*tt[i]/T+(W[i]-tt[i]/T*W[n]); i=i+1; endo; BB=a|BB; retp(BB); endp;