Jon Claerbout and Dave Nichols
Author has no known email address
In our C++ project we plan to supply reusable least-squares solvers. This led to a question that we are only beginning to answer, ``are there any helpful general purpose preconditioners?'' The one described in this note applies to operators that are representable in partitioned form, such as the regression
![]() |
(1) |
We came up with two possibilities for rescaling
before going to a conjugate-gradient (CG) solver.
These two possibilities are:
![]() |
(2) |
![]() |
(3) |
We dislike (3) because we don't know how to specify the random numbers.
We know the numbers should not be all ``1'' because
d/dx and are important operators and their norm
is clearly non zero whereas it might appear to be zero if
the random numbers were taken to be all ``1''.
On the other hand should the random numbers
be all positive or both positive and negative?
We are not sure we can make a prior specification
that would be generally satisfactory.
While positive random numbers might be safe enough,
it is worth considering (2).
Can it really be that (2) contains an idea not already inside
the CG solver?
After all, the first step of CG computes the sum of these two terms.
Apparently yes,
there is an important idea missing from the CG solver
which has no prior knowledge that the operator can be partitioned into the
and
parts.
Partitioned problems of the kind discussed here frequently arise from nonlinear optimization where there are two partial derivative matrices with different physical dimensions. Since the problems are nonlinear and the operators themselves change as the iteration proceeds, it is natural to think of changing the preconditioning scalars as the iteration proceeds. In the linear case, however, rescaling with iteration would mess up the CG solver. We asked Michael Saunders about the existence of nonlinear solvers for this type of problem, but he did not have any immediate leads.
An interesting close-to-home example
of a partitioned regression problem is found in PVI page 182.
This example is a one-dimensional missing data problem.
There the vector contains the 3-5 components
of a prediction-error filter (dimensionless transfer function)
whereas the
vector would have the typical 1-2 thousand
time samples of a seismogram (units of pressure, for example).
We have not tested the two alternative preconditioners suggested
in this paper because we have not yet done the programming.
Also, a more meaningful evaluation will arise in a multidimensional
context where preconditioning is more important,
and where more programming, and perhaps some more research, are required.
Two apparently related references are Kennett et al. (1988) and Golub and Varah (1974).