【正文】
,1)。dractions(1,1)=(rand(1,1))*2*pi。for k=1:200 dractions(k+1,1)=dractions(k,1)+(rand(1,1))。 vs(k+1,1)=。 xs(k+1,1)=xs(k,1)+vs(k+1,1)*cos(dractions(k+1,1))*1。 ys(k+1,1)=ys(k,1)+vs(k+1,1)*sin(dractions(k+1,1))*1。 if xs(k+1,1)40 xs(k+1,1)=xs(k+1,1)40。 elseif xs(k+1,1)0 xs(k+1,1)=xs(k+1,1)+40。 end if ys(k+1,1)40 ys(k+1,1)=ys(k+1,1)40。 elseif ys(k+1,1)0 ys(k+1,1)=ys(k+1,1)+40。 end for i=1:n ds(i)=sqrt((x(k,i)xs(k,1))^2+(y(k,i)ys(k,1))^2)。 for j=1:n d(i,j)=sqrt((x(k,i)x(k,j))^2+(y(k,i)y(k,j))^2)。 endendfor i=1:n d(i,i)=inf。end%%方向for i=1:n A=0。B=。 for j=1:n if d(i,j) A=Adraction(k,j)/3。 B=B1/d(i,j)。 if A~=0 draction(k+1,i)=(1t)*draction(k,i)t*A/B。 else draction(k+1,i)=draction(k,i)。 end elseif d(i,j)5 A=Adraction(k,j)/d(i,j)。 B=B1/d(i,j)。 if A~=0 draction(k+1,i)=(1t)*draction(k,i)+t*A/B。 else draction(k+1,i)=draction(k,i)。 end end end if ds(i)5 if x(k,i)xs(k,1)。 draction(k+1,i)=atan((y(k,i)ys(k,1))./(x(k,i)xs(k,1)))。 end if x(k,i)xs(k,1)。 draction(k+1,i)=atan((y(k,i)ys(k,1))./(x(k,i)xs(k,1)))+pi。 end end v(k+1,i)=。 end%%坐標(biāo)的更新for i=1:n x(k+1,i)=x(k,i)+v(k+1,i)*cos(draction(k+1,i))*1。 y(k+1,i)=y(k,i)+v(k+1,i)*sin(draction(k+1,i))*1。 if x(k+1,i)40 x(k+1,i)=x(k+1,i)40。 elseif x(k+1,i)0 x(k+1,i)=x(k+1,i)+40。 end if y(k+1,i)40 y(k+1,i)=y(k+1,i)40。 elseif y(k+1,i)0 y(k+1,i)=y(k+1,i)+40。 endendendfor i=1:kpause()plot(x(i,:),y(i,:),39。.39。,xs(i,:),ys(i,:),39。ro39。)axis([0 40 0 40])getframe。end20