next up previous contents
Next: SIRT Method Up: Theory Previous: Theory

Steepest Descent

For large $\alpha$ equation (6) can be approximated by
$\displaystyle {\bf ds}$ = $\displaystyle \alpha^-1 {\bf L^T dt }.$ (2.8)

The slowness vector $\bf s$must be updated by
$\displaystyle {\bf s}$ = $\displaystyle {\bf s} - \kappa{\bf L^T dt}$ (2.9)

in an iterative fashion. Here $\kappa$is a step length. Now use the updated $\bf s$ to calculate the new residuals $\bf dt$ and new raypath matrix $\bf L$, and use equation 2.9 to update the slowness perturbation. Repeat this procedure until convergence. This is the method of steepest descent, and usually books do not recommend its use due to slow convergence. However we find it to be quite useful if some form of regularization is used such as spatially smoothing the gradient at each iteration. Note the simplicity in implementing equation 2.9, and only requires O(N2) algebraic operations per iteration compared to O(N3) operations for the direct method. Below is the MATLAB code for a steepest descent tomography algorithm.

% t0     - input- observed traveltime data vector from ns shot gathers
%                 with ng traces per shot gather.
% s0     - input- starting slowness vector for a nx by nz slowness model 
%                 with cell width dx.
%thresh  - input- estimated average traveltime error
%filter  - input- small (e.g., 4x4) low-pass averaging filter 
% tc     -output- calculated traveltime data vector

s1 = s0;thresh=1;
[L,tc] = raytraveltime(s1,nx,nz,ns,ng,dx);
if thresh > 0;
  residual = tc -t0;
  s2 = s1 - alpha*L'*residual
  [L,tc] = raytraveltime(s1,nx,nz,ns,ng,dx);
  average_t_error = sqrt((tc-t0)'*(tc-t0))/(ns*ng)
  if average_t_error < thresh; thresh = -1;
    else; s2 = conv2(s2,filter);end;
It is also easy to show that the derivative of $\epsilon$ w/r to $\bf s$yields equation 2.9, i.e., the gradient of the misfit function is parallel to ${\bf L^T dt}$.

next up previous contents
Next: SIRT Method Up: Theory Previous: Theory
Gerard Schuster