From: Globe Trotter <itsme_410_at_yahoo.com>

Date: Tue 03 May 2005 - 23:15:39 EST

R-help@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 Received on Tue May 03 23:25:41 2005

Date: Tue 03 May 2005 - 23:15:39 EST

Thanks for looking into this! Sure, I will try and provide more info, but sorry
I seem to be doing really badly with posting....

*>
*

> Having cut&pasted from the data placed in the body of the

*> message (omitted here) I get 216 numbers. Having put these
**> in a vector x (in my own way):
**>
**> length(x)
**> ##[1] 216
*

*>
**> Question 1:
*

> ===========

*> Is this correct? Or has there been a problem with your
**> posting of the data?
*

Yes, this is correct: it is supposed to be such that the circulant matrix is symmetric and so Toeplitz. I am just ignoring the rest (which are pretty close to x[107:1].

*>
*

> If it is correct, given that you seem to only use x[1:109],

*> was there some point in giving the rest?
*

No, I should have deleted it -- sorry.

*> Question 2:
*

> ===========

*> Next, using your command:
**>
**> y<-x[c(109:1,0:108)]
**>
**> I now get
**>
**> length(y)
**> ##[1] 217
*

My mistake: that should be 1 instead of 0. I sincerely apologize!

*>
*

> (as expected). The "0" in "0:108" seems to have been ignored

*> (again as expected), so this is equivalent to
**>
**> y<-x[c(109:1,1:108)]
**>
**> Is this as intended? If so, why use "0:108" instead of "1:108"?
**> Check:
**>
**> y[1] ##[1] 19.4495
**> x[109] ##[1] 19.4495
**>
**> y[109] ##[1] -0.00116801
**> x[1] ##[1] -0.00116801
**>
**> y[110] ##[1] -0.00116801
**> x[1] ##[1] -0.00116801
**>
**> y[217] ##[1] -6.28085
**> x[108] ##[1] -6.28085
**>
**> Can you confirm that this is as intended?
**>
**> Comment 3:
**> ==========
**> You next command X=toeplitz(y): No apparent problems,
**> it gives a symmetric result:
**>
**> which(X != t(X)) ## numeric(0)
**>
**> with 217 rows and columns:
**>
**> dim(X) ##[1] 217 217
**>
**> and looks circulant:
**>
**> X[(1:5),(1:5)]
**> [,1] [,2] [,3] [,4] [,5]
**> [1,] 19.449500 -6.280850 -0.486405 -0.826079 -0.167792
**> [2,] -6.280850 19.449500 -6.280850 -0.486405 -0.826079
**> [3,] -0.486405 -6.280850 19.449500 -6.280850 -0.486405
**> [4,] -0.826079 -0.486405 -6.280850 19.449500 -6.280850
**> [5,] -0.167792 -0.826079 -0.486405 -6.280850 19.449500
**>
**> Question 4:
**> ===========
**> Your next command, "eigen(X)", would simply output the results
**> to screen and does not assign to anything.
*

true. But in my case, eigen(X)$vectors indicates the four columns to be NaN.

> Your next command "write(X,ncol=216,file="test.dat")" as it

*> stands will write the toeplitz matrix X, constructed by
**> your command "X<-toeplitz(y)" to file, but with 216
**> columns instead of 217. However, the result consists
**> simply of numbers, and there is nothing like "NA" or "NaN"
**> in the file which I get.
*

I made a mistake in typing -- it is 1:108, instead of 0. The file test.dat contains the symmetric circulant matrix on which I run the eigendecomposition using LAPACK.

> Nor are there any NAs or NaNs in X itself, of course.

No, there are none.

*>
*

> But, when you yourself did "write(X,ncol=216,file="test.dat")",

*> perhaps the "X" in this command was different from the "X"
**> which is the toeplitz matrix. So, was it the result of an
**> assignment from "eigen(X)" and, if so, which component or
**> components?
*

No, no, X was the Toeplitz matrix and all the confusion stems from my typo (extremely sorry again!)

> Question/Comment 5:

*> ===================
**> So I have tried Z<-eigen(X). First of all, I get no problems
**> with NAs or NaNs:
**>
**> which(is.na(Z$values)) ##numeric(0)
**> which(is.nan(Z$values)) ##numeric(0)
**> which(is.na(Z$vectors)) ##numeric(0)
**> which(is.nan(Z$vectors)) ##numeric(0)
**>
**> Next, trying various options for wirting to file:
**>
**> write(Z,ncol=216,file="test.dat")
**>
**> simply does not work (not a writable structure), while
**>
**> write(Z$values,ncol=216,file="test.dat")
**>
**> produces simply a set of numbers, no NAs of NaNs, and likewise
**>
**> write(Z$vectors,ncol=216,file="test.dat")
**>
**> (the only occurrences of non-numeric characters are "e", as
**> in "e-05").
**>
**> >> 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).
**>
**> Question 6:
**> ===========
**> Was the file "test.dat" the result of your "write" command?
**> Or was it left over from a previous activity, the "write"
**> from this session having failed to execute for some reason?
**> (In which case the NaNs would have nothing to do with the
**> results of "eigen(X)").
**>
**>
**> >> 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.
**>
**> Well, I didn't get any NaNs in R either -- quite consistent
**> with your C program!
**>
**> Please clarify according to the questions above.
**>
**> Best wishes,
**> Ted.
**>
*

I am very sorry for all the errors and extra extra work that my typo caused you.I should have been more careful. I apologize again!

Many thanks and best wishes!

R-help@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 Received on Tue May 03 23:25:41 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:31:32 EST
*