Boost logo

Boost :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2001-08-21 09:35:29


----- Original Message -----
From: "Dietmar Kuehl" <dietmar_kuehl_at_[hidden]>

> The same confusion between solvers, algorithms, and their
> implementation will probably arise with matrix libraries, too, and
> it already does with graphs as far as I have seen. I think we should
> define such terms precisely such that we can talk more clearly about
> these issues. Unfortunately, I'm not particularily comfortable with
> the term "solver" used in the text above but I can't think of a better
> term, almost certainly due to the fact that I'm not a native English
> speaker...

In the context of matrix libraries, "solver" usually refers to something
which solves the equation:

A * x = b

given A and b, e.g. by factoring A into L and U parts.

I think a better formulation might be to think of A as an
InvertibleLinearOperator and to think of its LU factorization as the inverse
of A.

Then:

  typedef InvertibleLinearOperator::inverse_type inverse_operator;
  inverse_operator A_inverse(A);
    // or
  inverse_operator A_inverse(invert(A));

  x = A_inverse * b;

One nice feature of this formulation is that you can hang onto the LU
factorization somewhere, and use it like any other LinearOperator.

-Dave


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk