James Wettenhall <[EMAIL PROTECTED]> writes:
> Hi,
>
> On Fri Apr 2, xt_wang wrote:
> > I want to use R function Matrix inverse in my c code, please
> > tell me how I can.
> > If there is a sample which can tell me how it works. It will
> > be fantastic.
>
> A good place to start learning how to interface R with C is the
> "Writing R Extensions" manual installed locally, or:
> http://cran.r-project.org/doc/manuals/R-exts.pdf
> http://rweb.stat.umn.edu/R/doc/manual/R-exts.html
>
> See also the article "In Search of C/C++ & Fortran Routines" in:
> http://cran.r-project.org/doc/Rnews/Rnews_2001-3.pdf
>
> I guess you'd have to decide whether you want to compile R as a
> shared library or not. I've never done this.
>
> But do you really want to call R from C to get a matrix inverse?
> Can't you just use a CLAPACK routine?
> http://www.netlib.org/clapack/
>
> I'm not sure which CLAPACK subroutine is best for your purposes,
> but I have in the past used dgels (double-precision gaussian
> elimination and least-squares) and found it to be good.
>
> I assume you have asked the question:
> "Do I really need an inverse?"
Exactly. The fact that we write a formula using an inverse of a
matrix does not mean that this is a good way to compute the result.
Versions 0.8-2 and higher of the Matrix package contain a vignette
called Comparisons.pdf that provides comparative timings of several
different approaches to solving a linear least squares problem.
> If Ax = b,
> x = inv(A) * b
> is computationally about twice as expensive as Gaussian
> Elimination.
Actually the "ge" in "dgels" stands for "general", not Gaussian
elimination. For square coefficient matrices the 'solve' function in
R now uses an LU decomposition (dgetrf) followed by dgetrs for
non-missing "b" or dgetri for the inverse ("b" missing).
The general rule is that if you are solving a specific set of linear
equations use dgetrf and dgetrs. If you decide that you really do
need an inverse, which is surprisingly rare, use dgetrf and dgetri.
______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html