## A function takes in the number of diffusive particle
## as an argument and gets the initial positions in 2D
## as an outcome by inserting them in a square.
function p=initial_positions7(Nwalkers)
dt=3; ## to extend the interval of axes.
a=sqrt(Nwalkers); ## step size.
n=(a-1)/2; ## max range in the x and y axes.
if(rem(a,2)~=1) ## Nwalkers must be odd squared.
printf("The number you have entered is not an odd squared. Exiting...\n");
return
endif
n=(a-1)/2; ## max range in the x and y axes.
x=[-n:n]'; ## integer interval in the x axis.
p=zeros(a,2); ## initialize the positions of 'a' walkers.
p(:,1)=x; ## equate the column of p to x vector.
p=repmat(p,a,1); ## replicate positions of 'a' walkers to get a*a walkers.
for i=1:a:Nwalkers ## the loop through the number walkers.
m=(i+a-1)/a; ## index get the entries of x resp.
p(i:i+a-1,2)=x(m) ; ## y components are a-fold degenerate.
endfor
plot(p(:,1),p(:,2),'b*;;')
axis(dt*[-n, n,-n,n])
endfunction
## as an argument and gets the initial positions in 2D
## as an outcome by inserting them in a square.
function p=initial_positions7(Nwalkers)
dt=3; ## to extend the interval of axes.
a=sqrt(Nwalkers); ## step size.
n=(a-1)/2; ## max range in the x and y axes.
if(rem(a,2)~=1) ## Nwalkers must be odd squared.
printf("The number you have entered is not an odd squared. Exiting...\n");
return
endif
n=(a-1)/2; ## max range in the x and y axes.
x=[-n:n]'; ## integer interval in the x axis.
p=zeros(a,2); ## initialize the positions of 'a' walkers.
p(:,1)=x; ## equate the column of p to x vector.
p=repmat(p,a,1); ## replicate positions of 'a' walkers to get a*a walkers.
for i=1:a:Nwalkers ## the loop through the number walkers.
m=(i+a-1)/a; ## index get the entries of x resp.
p(i:i+a-1,2)=x(m) ; ## y components are a-fold degenerate.
endfor
plot(p(:,1),p(:,2),'b*;;')
axis(dt*[-n, n,-n,n])
endfunction
Comments
Post a Comment