[BioC] poor precision of matrix inverse?
Markus Boenn
boenn at informatik.uni-halle.de
Mon Nov 22 18:18:06 CET 2010
Hi Zack
I think using
solve(b) %*% b
instead of
solve(b) * b
will yield a better result. Using the second command carries out a
miltiplication by the same components, i.e. A * B=(A_ij*B_ij) for each i,j
Best
Markus
zack liu wrote:
> Dear members,
>
> I am using "solve" to compute the inverse of a 5 by 5 matrix using R and
> matlab. The results are quite interesting.. It seems that R has very poor
> precision in terms of calculating inverse of a matrix.
>
> Can someone tell me if I should use other functions to computer matrix
> inverse?
>
>
> R Code
>
> ------------
>
>
>> b
>>
> [,1] [,2] [,3] [,4] [,5]
> [1,] 1.00000000 0.02522892 -0.09181110 0.03656846 -0.01403095
> [2,] 0.02522892 1.00000000 0.12764892 0.05252468 0.05174332
> [3,] -0.09181110 0.12764892 1.00000000 -0.01334807 0.02270218
> [4,] 0.03656846 0.05252468 -0.01334807 1.00000000 -0.08303199
> [5,] -0.01403095 0.05174332 0.02270218 -0.08303199 1.00000000
>
>> solve(b)
>>
> [,1] [,2] [,3] [,4] [,5]
> [1,] 1.01117403 -0.03672483 0.09683324 -0.03282862 0.01116385
> [2,] -0.03672483 1.02393425 -0.13360444 -0.05881784 -0.05534769
> [3,] 0.09683324 -0.13360444 1.02646994 0.01604039 -0.01369944
> [4,] -0.03282862 -0.05881784 0.01604039 1.01166293 0.08621905
> [5,] 0.01116385 -0.05534769 -0.01369944 0.08621905 1.01049046
>
>> solve(b) *b
>>
> [,1] [,2] [,3] [,4] [,5]
> [1,] 1.0111740259 -0.0009265279 -0.0088903666 -0.0012004920 -0.0001566394
> [2,] -0.0009265279 1.0239342521 -0.0170544622 -0.0030893886 -0.0028638734
> [3,] -0.0088903666 -0.0170544622 1.0264699443 -0.0002141082 -0.0003110073
> [4,] -0.0012004920 -0.0030893886 -0.0002141082 1.0116629287 -0.0071589398
> [5,] -0.0001566394 -0.0028638734 -0.0003110073 -0.0071589398 1.0104904599
>
>
> Matlab Code
> ___________________
>
>
>>> b
>>>
>
> b =
>
> 1.0000 0.0252 -0.0918 0.0366 -0.0140
> 0.0252 1.0000 0.1276 0.0525 0.0517
> -0.0918 0.1276 1.0000 -0.0133 0.0227
> 0.0366 0.0525 -0.0133 1.0000 -0.0830
> -0.0140 0.0517 0.0227 -0.0830 1.0000
>
>
>>> b^-1
>>>
>
> ans =
>
> 1.0112 -0.0367 0.0968 -0.0328 0.0112
> -0.0367 1.0239 -0.1336 -0.0588 -0.0553
> 0.0968 -0.1336 1.0265 0.0160 -0.0137
> -0.0328 -0.0588 0.0160 1.0117 0.0862
> 0.0112 -0.0553 -0.0137 0.0862 1.0105
>
>
>>> b^-1 *b
>>>
>
> ans =
>
> 1.0000 -0.0000 -0.0000 -0.0000 0.0000
> -0.0000 1.0000 -0.0000 -0.0000 -0.0000
> -0.0000 -0.0000 1.0000 0.0000 -0.0000
> -0.0000 -0.0000 0.0000 1.0000 -0.0000
> 0 -0.0000 0.0000 0.0000 1.0000
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor
>
--
Diplom-Bioinform. Markus Bönn
Martin-Luther-Universität Halle-Wittenberg
Naturwissenschaftliche Fakultät III
Institut für Informatik
von-Seckendorff-Platz 1
06120 Halle (Saale)
More information about the Bioconductor
mailing list