= | (2.8) |

The slowness vector must be updated by

in an iterative fashion. Here is a step length. Now use the updated to calculate the new residuals and new raypath matrix , 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

MATLAB STEEPEST DESCENT TOMOGRAPHY CODE % 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; endIt is also easy to show that the derivative of w/r to yields equation 2.9, i.e., the gradient of the misfit function is parallel to .