Thank you for the links and the information.You have been very helpful

On Sat, Jan 29, 2011 at 2:45 PM, David Winsemius <dwinsemius@comcast.net>wrote:

>
> On Jan 29, 2011, at 7:58 AM, David Winsemius wrote:
>
>
>> On Jan 29, 2011, at 7:22 AM, Alex Smith wrote:
>>
>>  Hello I am trying to determine wether a given matrix is symmetric and
>>> positive matrix. The matrix has real valued elements.
>>>
>>> I have been reading about the cholesky method and another method is to
>>> find
>>> the eigenvalues. I cant understand how to implement either of the two.
>>> Can
>>> someone point me to the right direction. I have used ?chol to see the
>>> help
>>> but if the matrix is not positive definite it comes up as error. I know
>>> how
>>> to the get the eigenvalues but how can I then put this into a program to
>>> check them as the just come up with $values.
>>>
>>> Is checking that the eigenvalues are positive enough to determine wether
>>> the
>>> matrix is positive definite?
>>>
>>
>> That is a fairly simple linear algebra fact that googling or pulling out a
>> standard reference should have confirmed.
>>
>
> Just to be clear (since on the basis of some off-line communications it did
> not seem to be clear):  A real, symmetric matrix is Hermitian (and therefore
> all of its eigenvalues are real). Further, it is positive-definite if and
> only if its eigenvalues are all positive.
>
>
> qwe<-c(2,-1,0,-1,2,-1,0,1,2)
> q<-matrix(qwe,nrow=3)
>
> isPosDef <- function(M) { if ( all(M == t(M) ) ) {  # first test
> symmetric-ity
>                                if (  all(eigen(M)$values > 0) ) {TRUE}
>                                   else {FALSE} } #
>                                else {FALSE}  # not symmetric
>
>                          }
>
> > isPosDef(q)
> [1] FALSE
>
>
>
>>
>>> m
>>>   [,1] [,2] [,3] [,4] [,5]
>>> [1,]  1.0  0.0  0.5 -0.3  0.2
>>> [2,]  0.0  1.0  0.1  0.0  0.0
>>> [3,]  0.5  0.1  1.0  0.3  0.7
>>> [4,] -0.3  0.0  0.3  1.0  0.4
>>> [5,]  0.2  0.0  0.7  0.4  1.0
>>>
>>
> > isPosDef(m)
> [1] TRUE
>
> You might want to look at prior postings by people more knowledgeable than
> me:
>
> http://finzi.psych.upenn.edu/R/Rhelp02/archive/57794.html
>
> Or look at what are probably better solutions in available packages:
>
> http://finzi.psych.upenn.edu/R/library/corpcor/html/rank.condition.html
>
> http://finzi.psych.upenn.edu/R/library/matrixcalc/html/is.positive.definite.html
>
>
> --
> David.
>
>
>>> this is the matrix that I know is positive definite.
>>>
>>> eigen(m)
>>> $values
>>> [1] 2.0654025 1.3391291 1.0027378 0.3956079 0.1971228
>>>
>>> $vectors
>>>          [,1]        [,2]         [,3]        [,4]        [,5]
>>> [1,] -0.32843233  0.69840166  0.080549876  0.44379474  0.44824689
>>> [2,] -0.06080335  0.03564769 -0.993062427 -0.01474690  0.09296096
>>> [3,] -0.64780034  0.12089168 -0.027187620  0.08912912 -0.74636235
>>> [4,] -0.31765040 -0.68827876  0.007856812  0.60775962  0.23651023
>>> [5,] -0.60653780 -0.15040584  0.080856897 -0.65231358  0.42123526
>>>
>>> and this are the eigenvalues and eigenvectors.
>>> I thought of using
>>> eigen(m,only.values=T)
>>> $values
>>> [1] 2.0654025 1.3391291 1.0027378 0.3956079 0.1971228
>>>
>>> $vectors
>>> NULL
>>>
>>>
>> > m <- matrix(scan(textConnection("
>>  1.0  0.0  0.5 -0.3  0.2
>>  0.0  1.0  0.1  0.0  0.0
>>  0.5  0.1  1.0  0.3  0.7
>>  -0.3  0.0  0.3  1.0  0.4
>>  0.2  0.0  0.7  0.4  1.0
>> ")), 5, byrow=TRUE)
>> #Read 25 items
>> > m
>>    [,1] [,2] [,3] [,4] [,5]
>> [1,]  1.0  0.0  0.5 -0.3  0.2
>> [2,]  0.0  1.0  0.1  0.0  0.0
>> [3,]  0.5  0.1  1.0  0.3  0.7
>> [4,] -0.3  0.0  0.3  1.0  0.4
>> [5,]  0.2  0.0  0.7  0.4  1.0
>>
>> all( eigen(m)$values >0 )
>> #[1] TRUE
>>
>>  Then i thought of using logical expression to determine if there are
>>> negative eigenvalues but couldnt work. I dont know what error this is
>>>
>>> b<-(a<0)
>>> Error: (list) object cannot be coerced to type 'double'
>>>
>>
>> ??? where did "a" and "b" come from?
>>
>>
>>>
>>
>> David Winsemius, MD
>> West Hartford, CT
>>
>> ______________________________________________
>> R-help@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> David Winsemius, MD
> West Hartford, CT
>
>

	[[alternative HTML version deleted]]

