## 2 Theory of Full Waveform Inversion
### Full Waveform Inversion  
The aim of inversion is to find a model parameter \(\mathbf{m}=[m_{1},m_{2},\dots,m_{n_{x},n_{z}}]^{t}\) in the model space to reduce the residual between the calculated and measured data. A least-square norm is chosen to define this misfit as the object function:  
\[\underset{m}{\text{min}}E(\mathbf{m})=\frac{1}{2}\parallel P_{r}(\mathbf{\psi })-\mathbf{d}\parallel^{2}=\frac{1}{2}(\Delta\mathbf{d}^{t})*\Delta\mathbf{d} \tag{3}\]where \(P_{r}\) is the sampling operator to extract the wavefield at the receivers from the forward model. \(\psi=\{\psi_{i}\},\ i=(1,2,\ldots,n_{r})\) and \(\mathbf{d}=\{d_{i}\},\ i=(1,2,\ldots,n_{r})\) are the calculated and measured data vectors, respectively. \(\Delta\mathbf{d}=\{P_{r}(\psi_{i})-d_{i}\},\ i=(1,2,\ldots,n_{r})\) is the residual vector. The superscript \(t\) is the vector or matrix transposed and \(*\) is the complex conjugate to convert the object function to real numbers. Various optimization algorithms can be applied to minimize the object function \(E(\mathbf{m})\). First and foremost, the gradient of \(E(\mathbf{m})\) should be defined with respect to the model parameters such as density, wave speed and attenuation. It offers the direction to iteratively update the vector space to minimize the misfit [27]. Based on [PERSON]'s theorem, we have:  
\[E(\mathbf{m}+\delta\mathbf{m})\approx E(\mathbf{m})+\mathbf{g}\cdot\delta \mathbf{m}+\frac{1}{2}\delta\mathbf{m}^{t}\cdot\mathbf{H}\cdot\delta\mathbf{m }=P(\delta\mathbf{m}) \tag{4}\]  
where \(\mathbf{g}=\frac{\partial E(\mathbf{m})}{\partial\mathbf{m}}=\Re e(\mathbf{ J}^{t}\Delta\mathbf{d}^{*})\) is the gradient with a size of \(l\times 1\). \(\mathbf{J}=[\frac{\partial\psi_{p}(m_{d})}{\partial m_{q}}],p=(1,2,\ldots,n_{ r});q=(1,2,\ldots,n_{x}n_{z})\) is the \(n_{r}\times l\) order Frechet derivative matrix and \(\Re e\) denotes the real part of the complex value. \(\mathbf{H}=\frac{\partial^{2}E(\mathbf{m})}{\partial\mathbf{m}^{2}}\) is the Hessian matrix. To minimize the object function \(E(\mathbf{m})\), let \(\frac{dP(\delta\mathbf{m})}{d(\delta\mathbf{m})}=\mathbf{g}+\mathbf{H}\delta \mathbf{m}\) be zero then \(\delta\mathbf{m}=-\mathbf{H}^{-1}\cdot\mathbf{g}\). Therefore, the model can be updated as:  
\[\mathbf{m}_{k+1}=\mathbf{m}_{k}-\epsilon\mathbf{H}^{-1}\mathbf{g} \tag{5}\]  
where \(\epsilon\) is the step length. When only the first-order derivative is considered, the corresponding method is called the steepest descent method. It is a straightforward way, but its convergence rate is so slow that it limits the application for large-scale problems [17]. To boost the convergence, the second-order derivative should be taken into consideration. However, the computation amount and storage space increase sharply because of the calculation of the inverse Hessian matrix \(\mathbf{H}^{-1}\). To handle this problem, quasi-Newton methods have been developed to approximate the Hessian matrix. The limited-memory Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) method is one of the most popular methods. This method calculates the approximation of the inverse Hessian matrix by a limited number (\(n_{lim}\)) of the gradient-difference and model-difference vectors associated with the \(n_{lim}\) latest iteration (\(n_{lim}\) is generally defined between 3 and 20) [28]. At every iteration \(\hat{n}_{lim}=\min\{n_{lim},k-1\}\), correction pairs \(\{\alpha_{i},\beta_{i}\},i=k-\hat{n}_{lim},k-\hat{n}_{lim}+1,\ldots,k-1\) are stored, where \(\alpha_{i}=\mathbf{m}_{i+1}-\mathbf{m}_{i}\), \(\beta_{i}=\mathbf{g}_{i+1}-\mathbf{g}_{i}\). Let \(\mathbf{  
The flow chart of the FWI algorithm is illustrated in Figure 1. When only one frequency is applied to the update model, no external loop is needed to perform and this method is called monochromatic inversion. In actual ultrasonic testing, the ultrasonic signal contains not just a single frequency. When several frequencies are used simultaneously during the inversion, the robustness will be improved but it comes at the cost of an increased computational time.