[R] eigenvalues of a circulant matrix
Globe Trotter
itsme_410 at yahoo.com
Tue May 3 18:24:40 CEST 2005
Good point: the Bellman reference is a book:
Introduction to Matrix Analysis by Bellman (1960). McGraw-Hill Series in Matrix
Theory.
--- 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
> >> PLEASE do read the posting guide!
> > 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
> > PLEASE do read the posting guide!
> > 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
>
>
More information about the R-help
mailing list