circulant {magic} | R Documentation |
Creates and tests for circulant matrices of any order
circulant(n, vec=1:n) is.circulant(m,dir=rep(1,length(dim(m))))
n |
Order of circulant matrix in circulant() |
vec |
In circulant() , vector of elements of the first row,
defaulting to 1:n . |
m |
In is.circulant() , matrix to be tested for
circulantism |
dir |
In is.circulant() , the direction of the diagonal.
In a matrix, the default value (c(1,1) ) traces the major
diagonals. |
A matrix a is circulant if all (major) diagonals are uniform,
ie if a[i,j]==a[k,j] when i-j=k-l
(modulo n). The standard values to use give 1:n
for the top row.
In the case of arbitrary dimensional arrays, giving the default value
for dir
checks that
a[v]==a[v+rep(1,d)]==...=a[v+rep((n-1),d)]
for all
v
(that is, following lines parallel to the major diagonal);
indices are passed through process()
.
For general dir
, the function checks that
a[v]==a[v+dir]==a[v+2*dir]==...==a[v+(n-1)*d]
for all
v
.
Robin K. S. Hankin
Arthur T. Benjamin and K. Yasuda. Magic “Squares” Indeed!, American Mathematical Monthly, vol 106(2), pp152-156, Feb 1999
circulant(5) circulant(5,vec=2^(0:4)) is.circulant(circulant(5)) a <- outer(1:3,1:3,"+")%%3 is.circulant(a) is.circulant(a,c(1,2)) is.circulant(array(c(1:4,4:1),rep(2,3))) is.circulant(magic(5)%%5,c(2,-1))