|
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