function() { n<-8 # Dimenzia kocky. Pocet bodov bude 2^n, n>=5. sd<-0.001 # Urcuje rychlost pohybu bodov. N<-20000 # Pocet krokov. numtobin<-function(n,N){ #Prevod cisla do binarneho vektora b<-rep(-1,N); for(i in 1:N){b[i]<-n%%2; n<-n%/%2}; b} rU<-function(U0,sd){ #Nahodna ortogonalna matica n<-dim(U0)[1]; U<-U0 for(i in 1:(n-1)){ for(j in (i+1):n){ V<-diag(n); psi<-rnorm(1,mean=0,sd=sd) V[i,i]<-cos(psi); V[i,j]<-sin(psi) V[j,i]<-(-sin(psi)); V[j,j]<-cos(psi) U<-U%*%V}} U} B<-matrix(0,ncol=n,nrow=2^n) for(i in 0:(2^n-1)) B[i+1,]<-numtobin(i,n) Udel<-rU(diag(n),sd); U<-diag(n) for(i in 1:N){ H<-U%*%t(B); V<-t(H[1:2,]) cl<-(H[3:5,]/sqrt(n)+1)/2 plot(V[,1],V[,2],pch=16,cex=4,col=rgb(cl[1,],cl[2,],cl[3,]),axes=FALSE,xlab="",ylab="",asp=1) U<-U%*%Udel } }