If we are to eliminate the null-space noises,
we will need some criterion in addition to stepout.
One such criterion is amplitude:
the noise events are the small ones.
Before using a nonlinear method,
we should be sure, however, that
we have exploited the full power of linear methods.
Information in the data is carried by the envelope functions,
and these envelopes have not been included in the analysis so far.
The envelopes can be used to make weighting functions.
These weights are not weights on residuals, as
in the routine iner() .
These are weights on the solution.
The
stabilization
in routine
pe2()
applied uniform weights using
the subroutine
ident()
,
as has been explained.
Here we simply apply variable weights
using
the subroutine diag()
.
The weights themselves are the inverse of the envelope of input data
(or the output of a previous iteration).
Where the envelope is small lies a familiar problem, which
I approached in a familiar way--by adding a small constant.
The result is shown in Figure 19.
![]() |
The top row is the same as Figure 13. The middle row shows the improvement that can be expected from weighting functions based on the inputs. So the middle row is the solution to a linear interpolation problem. Examining the envelope function on the middle left, we can see that it is a poor approximation to the envelope of the output data, but that is to be expected because it was estimated by smoothing the absolute values of the input data (with zeros on the unknown traces). The bottom row is a second stage of the process just described, where the new weighting function is based on the result in the middle row. Thus the bottom row is a nonlinear operation on the data.
When interpolating data, the number of unknowns is large. Here each row of data is 75 points, and there are 20 rows of missing data. So, theoretically, 1500 iterations might be required. I was getting good results with 15 conjugate-gradient iterations until I introduced weighting functions; then the required number of iterations jumped to about a hundred. The calculation takes seconds (unless the silly computer starts to underflow; then it takes me 20 times longer.)
I believe the size of the dynamic range in the weighting function
has a controlling influence on the number of iterations.
Before I made
Figure 19,
I got effectively the same result, and more quickly,
using another method, which I abandoned because its philosophical
foundation was crude.
I describe this other method here only
to keep alive the prospect of exploring the issue of the speed
of convergence.
First I moved the ``do iter'' line above the already indented
lines to allow for the nonlinearity of the method.
After running some iterations with to ensure the emergence of some big interpolated values,
I turned on
at values below a threshold.
In the problem at hand, convergence speed is not important economically
but is of interest because we have so little guidance as to
how we can alter problem formulation in general
to increase the speed of convergence.