Re: TMatrix::Invert

From: Valeri Fine (Faine) (fine@bnl.gov)
Date: Thu Mar 23 2000 - 16:34:51 MET


----- Original Message -----
From: GENTIT Francois-Xavier DAPNIA <GENTIT@DAPNIA.CEA.FR>
To: <roottalk@hpsalo.cern.ch>
Sent: 23 марта 2000 г. 7:21
Subject: TMatrix::Invert


>    Dear ROOT Authors,
>    In the documentation about TMatrix::Invert(...), it is said :
>
> "Use this method only if none of specialized algorithms (for symmetric,
> tridiagonal, etc) matrices isn't applicable/available."
>
>    But where are these specialized algorithms? In particular, what is the
> name of the method to invert a symmetric matrix ?

In STAR we did a small class a'la TMath with some static methods borrowed
from the CERNLIB to play with matrix:

http://www.star.bnl.gov/STAR/html/comp_l/root/html/StCL.html

One can find this class as part of ROOT.CMZ under STAR/TCL patch.
I believe such "primitive" methods  must be employed as the lowest level
of many OO models. OO model can be changed but the mathematical definition
of those operations will not.

Lack of such "abstract, plain mathematical" definition of the vector / matrix operations is a reason of the huge amount of the
non-compatible OO models.
Everyday some new Matrix / Vector class is born and everyday the authors of that class have to write / code / debug the matrix
multiplication again and
again from the scratch.

Having this well-defined well-known and hard-tested (for 30 years)
definitions of the matrix operation we can go ahead with OO model
of some particular vector / matrix etc.

Very often  for scientific applications there is a need to
regard some "row numbers" as a vector / matrix different
kind for a moment.

It is VERY expansive  each time when one needs this to create
a TVector / TMatrix, populate it properly with the row numbers,
make that class operation, copy all parameters back and delete object.

Another advantages of such primitive classes, they have no base class,
they have no data-member and they have no virtual functions.
(yes , it is well-known subroutine that has been serving as us very well
for 50 years).

This means this class is compatible with ANY framework.
(In fact I would be happy see them not as a part of ROOT framework
rather as part of CLHEP or smth like this).

Of course there is another approach - call CERNLIB directly from the
C++ code and sometimes it can be used too.

        Valery



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:21 MET