# [R] eigenvalues of a circulant matrix

Kjetil Brinchmann Halvorsen kjetil at acelerate.com
Wed May 4 02:13:28 CEST 2005

```Globe Trotter wrote:

>Good point: the Bellman reference is a book:
>
>Introduction to Matrix Analysis by Bellman (1960). McGraw-Hill Series in Matrix
>Theory.
>
>
--- and republished much later by SIAM.

Kjetil

>
>--- Robin Hankin <r.hankin at noc.soton.ac.uk> wrote:
>
>
>
>>Hi everyone.
>>
>>The following webpage gives a definition of circulant matrix, which
>>agrees with the
>>definition given in the magic package.
>>
>>http://mathworld.wolfram.com/CirculantMatrix.html
>>
>>best  wishes
>>
>>rksh
>>
>>
>>
>>On May 3, 2005, at 08:06 am, Mulholland, Tom wrote:
>>
>>
>>
>>>Well since I know nothing about this topic I have lurked so far, but
>>>here's my two bob's worth.
>>>
>>>Firstly I tried to make sense of Brian's initial reply. I have got no
>>>idea who Bellman is and you have not referenced (his/her) work in a
>>>way I can access the issues you refer to. So I assumed that's exactly
>>>what Brian was talking about.
>>>
>>>Secondly.
>>>
>>>toeplitz(1:4)
>>>     [,1] [,2] [,3] [,4]
>>>[1,]    1    2    3    4
>>>[2,]    2    1    2    3
>>>[3,]    3    2    1    2
>>>[4,]    4    3    2    1
>>>
>>>require(magic)
>>> circulant(4)
>>>     [,1] [,2] [,3] [,4]
>>>[1,]    1    2    3    4
>>>[2,]    4    1    2    3
>>>[3,]    3    4    1    2
>>>[4,]    2    3    4    1
>>>
>>>So they are obviously two different things. Although I think you may
>>>have implied (not stated) that the particular combination you were
>>>using resulted in both being exactly the same.
>>>
>>>It does appear as if in this case the (X) matrix is circulant. But
>>>then I'm no expert in even such simple things.
>>>
>>>Then I had no idea where I was going. So I tried the variations in
>>>eigen.
>>>
>>>I ran you code
>>>x<-scan("h:/t.txt")
>>>y<-x[c(109:216,1:108)]
>>>X<-toeplitz(y)
>>> and then
>>>
>>>
>>>
>>>>X[is.na(X)]
>>>>
>>>>
>>>numeric(0)
>>>
>>>So I didn't get any NAs
>>>
>>>t1 <- eigen(X)\$vectors
>>>t2 <- eigen(X,symmetric = TRUE)\$vectors
>>>
>>>
>>>>identical(t1,t2)
>>>>
>>>>
>>>[1] TRUE
>>>
>>>
>>>Then
>>>
>>>t2 <- eigen(X,symmetric = TRUE,EISPACK = TRUE)\$vectors
>>>
>>>
>>>>identical(t1,t2)
>>>>
>>>>
>>>[1] FALSE
>>>
>>>
>>>So there'e obviously more than one way of getting the vectors. Does
>>>the second one make more sense to you?
>>>
>>>I also noticed in the eigen help that there are references to issues
>>>such as "IEEE 754 arithmetic","(They may also differ between methods
>>>and between platforms.)" and "or Hermitian if complex". All of these
>>>are out of my competence but they do signal to me that there are
>>>issues which may relate to hardware, digital arithmetic and other
>>>things of that ilk.
>>>
>>>I added the comment about complex because I have a vague idea that
>>>they are related to imaginary parts that you refer to.
>>>
>>>So not coming to any conclusion that makes sense to me, and given that
>>>there are often threads about supposed inaccuracies that have answers
>>>such as the digits you see are not always what are held by the machine
>>>I set my options(digits = 22) and noticed that some of the numbers are
>>>still going at the 22 decimal place suggesting that the machine might
>>>be incapable of producing perfectly accurate results using digital
>>>arithmetic.
>>>
>>>My other big sphere of ignorance is complex numbers.
>>>
>>>So I tried
>>>X<-toeplitz(complex(real = y))
>>>t1 <- eigen(X)\$vectors
>>>
>>>
>>>
>>>>t1[1:20]
>>>>
>>>>
>>> [1]  0.068041577278880341+0i -0.068041577140546913+0i
>>>0.068041576864811659+0i -0.068041576452430155+0i
>>> [5]  0.068041575907139579+0i -0.068041575231135451+0i
>>>0.068041574435267163+0i -0.068041573525828514+0i
>>> [9]  0.068041572538722991+0i -0.068041571498323253+0i
>>>0.068041570619888622+0i -0.068041570256170081+0i
>>>[13]  0.068041568759931989+0i -0.068041566476633147+0i
>>>0.068041563560502477+0i -0.068041560000305007+0i
>>>[17]  0.068041555538765813+0i -0.068041549792984865+0i
>>>0.068041544123969511+0i -0.068041537810956801+0i
>>>
>>>
>>>>t2[1:20]
>>>>
>>>>
>>> [1]  0.068041381743976906 -0.068041381743976850  0.068041381743976781
>>>-0.068041381743976753  0.068041381743976587
>>> [6] -0.068041381743976725  0.068041381743976920 -0.068041381743976836
>>> 0.068041381743976892 -0.068041381743976781
>>>[11]  0.068041381743976781 -0.068041381743977392  0.068041381743976725
>>>-0.068041381743976753  0.068041381743976753
>>>[16] -0.068041381743976698  0.068041381743976587 -0.068041381743976642
>>> 0.068041381743976698 -0.068041381743976490
>>>
>>>
>>>Which is again different. I have no idea what I'm doing but you do
>>>seem to get slightly different answers depending upon which method you
>>>use. I do not know if one is superior to the others or where one draws
>>>the line in terms of accuracy.
>>>
>>>Tom
>>>
>>>
>>>
>>>>-----Original Message-----
>>>>From: r-help-bounces at stat.math.ethz.ch
>>>>[mailto:r-help-bounces at stat.math.ethz.ch]On Behalf Of Globe Trotter
>>>>Sent: Tuesday, 3 May 2005 10:51 AM
>>>>To: r-help at stat.math.ethz.ch
>>>>Subject: Re: [R] eigenvalues of a circulant matrix
>>>>
>>>>
>>>>OK, here we go:
>>>>
>>>>I am submitting two attachments. The first is the datafile
>>>>called kinv used to
>>>>create my circulant matrix, using the following commands:
>>>>
>>>>
>>>>x<-scan("kinv")
>>>>y<-x[c(109:1,0:108)]
>>>>X=toeplitz(y)
>>>>eigen(X)
>>>>write(X,ncol=216,file="test.dat")
>>>>
>>>>reports the following columns full of NaN's: 18, 58, 194,
>>>>200. (Note that
>>>>eigen(X,symmetric=T) makes no difference and I get the same as above).
>>>>
>>>>The second attachment contains only the eigenvectors obtained
>>>>on calling a
>>>>LAPACK routine directly (from C). The eigenvalues are
>>>>essentially the same as
>>>>that obtained using R. Here, I use the LAPACK-recommended
>>>>double precision
>>>>routine dspevd() routine for symmetric matrices in packed
>>>>storage format. Note
>>>>the absence of the NaN's....I would be happy to send my C
>>>>programs to whoever
>>>>is interested.
>>>>
>>>>I am using
>>>>
>>>>:~> uname -a
>>>>Linux 2.6.11-1.14_FC3 #1 Thu Apr 7 19:23:49 EDT 2005 i686
>>>>i686 i386 GNU/Linux
>>>>
>>>>and R.2.0.1.
>>>>
>>>>Many thanks and best wishes!
>>>>
>>>>______________________________________________
>>>>R-help at stat.math.ethz.ch mailing list
>>>>https://stat.ethz.ch/mailman/listinfo/r-help
>>>>
>>>>
>>>http://www.R-project.org/posting-guide.html
>>>
>>>______________________________________________
>>>R-help at stat.math.ethz.ch mailing list
>>>https://stat.ethz.ch/mailman/listinfo/r-help
>>>http://www.R-project.org/posting-guide.html
>>>
>>>
>>>
>>>
>>--
>>Robin Hankin
>>Uncertainty Analyst
>>Southampton Oceanography Centre
>>European Way, Southampton SO14 3ZH, UK
>>  tel  023-8059-7743
>>
>>
>>
>>
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
>
>
>
>

--

Kjetil Halvorsen.

Peace is the most effective weapon of mass construction.
--  Mahdi Elmandjra

--
Internal Virus Database is out-of-date.
Checked by AVG Anti-Virus.

```