Date: Mon, 1 May 2000 16:25:11 +0200 (CEST)
From: gb <gb at stat.umu.se>
On 1 May 2000, Douglas Bates wrote:
gb <gb at stat.umu.se> writes:
How about 'Ainv <- qr.solve(A)'?
I happened to read the help page for 'qr.solve' the other day, and there I
found that qr.solve(A, b) "is == but much better than solve(A) %*% b".
(I guess that 'better than' refers to numerical stability?)
The "better than" refers to the fact that creating the inverse is
more-or-less equivalent to solving n systems of linear equations,
where n is the number of columns in A. If n is large it does not make
sense to compute the solutions to n systems of equations in order to
evaluate the solution to one system of equations.
I see! But then I think the help page is somewhat misleading. If it said
'...better than qr.solve(A) %*% b', there would be no doubt.
Is qr.solve generally to be preferred to solve, which seems to be
indicated by the cited help page? And what is hidden behind solve?
I think if you check the code for solve you will find that it usually
calls qr.solve. qr.solve is just one method of solving a linear
system of equations.
function(a, b, ...) UseMethod("solve")
[1] "solve.default" "solve.qr"
I guess that I have to find the underlying C code to find out
what "solve.default" is, and when which method is used. I have
looked around in R-1.0.1/src/* with no great success. Can I
get a hint where to search?