The general location problem

Setting up the problem

The model parameters

The earthquake location can be defined by its hypocenter (latitude, longitude, and depth). The earthquake's origin time is also unknown. We therefore need to solve for four different model parameters.
Define the vector x as the estimate of the source parameters, where T0 is the event origin time (s), h is the depth (km), Q is latitude (°N), and F is longitude (°E):

x = [T0, h, Q, F]T



Now define a small perturbation to these source parameters:

dx = [dT0, dh, dQ, dF]T

The data

Tiobs = arrival time observed at the i-th station.

How to relate the data to the model parameters

Ticalc = predicted arrival time = T0 + travel time calculated from source to the i-th station.
For this lab, the theoretical travel times are obtained by interpolations of travel time tables that represent the 1D Earth model ak135.

Tiobs = Ticalc + dTi/dT0 dT0 + dTi/dh dh + dTi/dQ dQ + dTi/dF dF + higher order terms

We can thus relate the vector with arrival time residuals to the vector with model perturbations:

dTi = Tiobs - Ticalc = Aijdxj + higher order terms



where Aij = dTi/dxj,   i = 1, ...N; j = 1,...4
Ai1 = 1
Ai2 = -cos(ii)/v
Ai3 = -dT/dDcos(zi) = -picos(zi)
Ai4 = --dT/dDsin(zi)cos(Qi) = -pisin(zi)cos(Qi)

where ii is the take-off angle at the source for the i-th station (angle between vertical and ray), and zi is the azimuth (angle measured clockwise from North to the source-to-receiver ray direction).



Solving the problem

If the initial event location estimate is good enough, we can discard the higher order terms and linearize the problem. We solve this set of linear equations by performing a 'least-squares inversion'. We'll be finding the vector dx that minimizes the difference between observed and calculated arrival time residuals. Because the location problem is nonlinear, we have to do this iteratively. For every new location we find, we have to recalculate the partial derivatives (the take-off angle and azimuth will change slightly when the location is different).


dT = Adx

ATdT = AT A dx

ATA is a symmetric matrix and it thus has an inverse. Its inverse can be evaluated using scilab command 'inv()'. Premultiply both sides of the previous equation by (ATA)-1 to obtain dx:

dx = (ATA)-1 AT dT



This is the least squares solution to the linear system of equations.
Now, add this perturbation to the previous estimate of the model parameters to obtain a new solution:

xnew = x + dx



You can iterate this procedure until you find an acceptable solution. One can use several criteria for this. We use the criterium that the variance of the arrival time residuals has to be minimized.
e = Si (Tiobs - Ticalc)2 / (ndata - nmodel)

ndata = number of data points (observations)
nmodel = number of model parameters (3 or 4, depending on whether you keep the depth fixed)

In fact, we minimize a quantity called Root Mean Square residual, the square root of the variance. It gives a direct indication of how well we match the observed arrival times.