[R] identity matrix
David Scott
d.scott at auckland.ac.nz
Sun Oct 30 22:29:52 CET 2005
On Sun, 30 Oct 2005, Robert wrote:
> I found a very odd thing.
> A matrix multiplied by its inverse matrix should be an
> identity matrix.
> But why the following thing happens?
> <a%*%solve(a) is not an identity matrix>
>> x%*%t(x)
> [,1] [,2] [,3] [,4] [,5]
> [1,] 108.16 58.24 32.24 66.56 225.68
> [2,] 58.24 31.36 17.36 35.84 121.52
> [3,] 32.24 17.36 9.61 19.84 67.27
> [4,] 66.56 35.84 19.84 40.96 138.88
> [5,] 225.68 121.52 67.27 138.88 470.89
>> a=x%*%t(x)
>> solve(a)
> [,1] [,2] [,3]
> [,4] [,5]
> [1,] -1.372649e+14 1.078492e+14 -2.553747e+14
> 1.126842e+14 4.120191e+13
> [2,] -1.174558e+14 1.543860e+14 2.323143e+14
> -1.375074e+14 2.381809e+13
> [3,] -3.062129e+14 6.914056e+14 -1.656744e+15
> 7.007732e+14 -1.672741e+12
> [4,] 1.761208e+14 -3.724017e+14 7.773835e+14
> -2.156631e+14 -3.575351e+13
> [5,] 8.789836e+13 -8.046912e+13 6.984285e+13
> -5.502429e+13 -1.510937e+13
All those e+13, e+14, e+15 values didn't ring any alarms for you?
What you are seeing is just the limits of accuracy of calculation on a
computer.
Yes, A times A^{-1} is the identity when calculations are infinitely
accurate, but there are limits on accuracy when using a computer.
Lots of other nice mathematical properties go out the window with floating
point computation: it is not associative or distributive for starters.
Best do a bit of reading on floating point computation: the Wiki article
is a readily available starting point:
http://en.wikipedia.org/wiki/Floating_point
David Scott
_________________________________________________________________
David Scott Department of Statistics, Tamaki Campus
The University of Auckland, PB 92019
Auckland NEW ZEALAND
Phone: +64 9 373 7599 ext 86830 Fax: +64 9 373 7000
Email: d.scott at auckland.ac.nz
Graduate Officer, Department of Statistics
More information about the R-help
mailing list