[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
debug output of eigs?
From: |
David Bateman |
Subject: |
debug output of eigs? |
Date: |
Wed, 18 May 2005 14:20:35 +0200 |
User-agent: |
Mozilla Thunderbird 0.8 (X11/20040923) |
Dear All,
In implementing eigs and trying to make it matlab compatible I've run
across an issue with the debugging output when opts.disp > 0 (default
value of 1 in matlab). The problem is that ARPACK returns to the calling
function several times to ask for operations like A*x to be done, but a
single iteration as defined by ARPACK is when its internal
representation of the Ritz values are updated, and this counter is not
returned and several A*x calls are needed for a single iteration.
However, it is this internal counter that matlab uses for display such as
Iteration 27: a few Ritz values of the 20-by-20 matrix:
5.9659
5.9848
5.9848
5.9962
5.9962
and so matlab certainly has a modified version of ARPACK that they use
for this purpose. We have several choices.
1) Include ARPACK into the octave source tree and make the necessary
modifications to return the iteration counter
in the same manner as matlab.
2) Print out each time we come back from ARPACK. This means that the
iteration count is meaningless and that the Ritz values will not change
at each nominal iteration.
3) Try to fool ARPACK into giving information about the iteration
counter by setting the output value workl[ipntr(5)-1] to a NaN, and
then test when it isn't a NaN for printing. There are several downsides
to this. If ARPACK terminates on an iteration, the returned eigenvalues
will contain this NaN, so the termination needs to check for the NaN,
and without in depth understanding of the ARPACK code there is no
guarantee that this value is not in fact used in some cases and so there
is a some potential of adding a difficult to find bug to eigs
4) Store a local copy of the Ritz values and consider that there is an
iteration when these values have changed. This is rather messy, require
an overhead in terms of testing for equality of the Ritz values and
storing them, but it will work.
5) Ignore the whole mess of the matlab debugging arguments and just
don't display these messages
What is the preferred solution, of people on this list? In any case
apart of this and a couple of issues with the general eigenvalue
equation (when B is set) I now have most of eigs working...
Cheers
David
--
David Bateman address@hidden
Motorola Labs - Paris +33 1 69 35 48 04 (Ph)
Parc Les Algorithmes, Commune de St Aubin +33 1 69 35 77 01 (Fax)
91193 Gif-Sur-Yvette FRANCE
The information contained in this communication has been classified as:
[x] General Business Information
[ ] Motorola Internal Use Only
[ ] Motorola Confidential Proprietary
- debug output of eigs?,
David Bateman <=