In the studies of Fourier optics, sound synthesis, stellar interferometry, optical tweezers, and diffractive optical elements (DOEs) it is often important to know the spatial frequency phase of an observed wave source. In order to reconstruct this phase the Adaptive-Additive Algorithm (or AA algorithm), which derives from a group of adaptive (input-output) algorithms, can be used. The AA algorithm is an iterative algorithm that utilizes the Fourier Transform to calculate an unknown part of a propagating wave, normally the spatial frequency phase (k space). This can be done when given the phase’s known counterparts, usually an observed amplitude (position space) and an assumed starting amplitude (k space). To find the correct phase the algorithm uses error conversion, or the error between the desired and the theoretical intensities. The AA algorithm is currently being implemented by Dr. Wendell Hill III, Alex Robel, V. Kotlyar Soifer, and David G. Grier.

## The algorithm

### History

The adaptive-additive algorithm was originally created to reconstruct the spatial frequency phase of light intensity in the study of stellar interferometry. Since then, the AA algorithm has been adapted to work in the fields of Fourier Optics by Soifer and Dr. Hill, soft matter and optical tweezers by Dr. Grier, and sound synthesis by Robel.

### Pseudo-code algorithm

1. Define input amplitude and random phase

2. Forward Fourier Transform

3. Separate transformed amplitude and phase

4. Compare transformed amplitude/intensity to desired output amplitude/intensity

5. Check convergence conditions

6. Mix transformed amplitude with desired output amplitude and combine with transformed phase

7. Inverse Fourier Transform

8. Separate new amplitude and new phase

9. Combine new phase with original input amplitude

10. Loop back to Forward Fourier Transform

### Example

For the problem of reconstructing the spatial frequency phase (k-space) for a desired intensity in the image plane (x-space). Assume the amplitude and the starting phase of the wave in k-space is $A_0$ and $\phi_n^{k}$ respectively. Fourier transform the wave in k-space to x space.

$A_0e^{i\phi_n^{k}} \xrightarrow{FFT} A_n^fe^{i\phi_n^{f}}$

Then compare the transformed intensity $I_n^f$ with the desired intensity $I_0^f$, where

$I_n^f = \left(A_n^f\right)^2,$
$\varepsilon = \sqrt{\left(I_n^f\right)^2 - \left(I_0\right)^2}.$

Check $\varepsilon$ against the convergence requirements. If the requirements are not met then mix the transformed amplitude $A_n^f$ with desired amplitude $A^f$.

$\bar{A}^f_n = \left[a A^f + (1-a) A_n^f\right],$

where a is mixing ratio and

$A^f = \sqrt{I_0}$.

Note that a is a percentage, defined on the interval 0 ≤ a ≤ 1.

Combine mixed amplitude with the x-space phase and inverse Fourier transform.

$\bar{A}^{f}e^{i\phi_n^f} \xrightarrow{iFFT} \bar{A}_n^ke^{i\phi_n^k}.$

Separate $\bar{A}_n^k$ and $\phi^k_n$ and combine $A_0$ with $\phi^k_n$. Increase loop by one $n \to n + 1$ and repeat.

#### Limits

• If $a = 1$ then the AA algorithm becomes the Gerchberg–Saxton algorithm.
• If $a = 0$ then $\bar{A}^k_n = A_0$.