# Συνάρτηση προς επιβεβαίωση του θεωρήματος Wigner. # Με το όρισμα temp, ο χρήστης δηλώνει αν θέλει ο πίνακας να # αποτελείται από στοιχεία της Ν(0,1) ή από στοιχεία της Unif(-sqrt(3),sqrt(3)). # Το πρώτο αντιστοιχεί σε temp=TRUE και το δεύτερο σε temp=FALSE. # Για τη χρήση της εντολής ifelse, μπορείτε να δείτε στο R Help Menu. # Η χρήση της πάντως μπορεί να αποφευχθεί. # Επίσης, η χρήση των for-βρόγχων μπορεί να αποφευχθεί με κατάλληλους χειρισμούς. wigner<-function(n=2500, temp=TRUE) { m<-matrix(0, ncol=n, nrow=n) for(i in 1:n) { for (j in 1:n) { if (i<=j) m[i,j]<-ifelse(temp==T, rnorm(1), runif(1,-sqrt(3),+sqrt(3))) else m[i,j]<-m[j,i] } } e<-(1/sqrt(n))*eigen(m,symmetric=T, only.values = T)$values hist(e, nclass=20, main=c("n=",n), col=3) } wigner(n=2500)