# grape_phase.m

Cost function for optimal control using the GRAPE algorithm. Returns fidelity, gradient and Hessian for a given waveform, specified in polar coordinates. Only the phase channel gradient is returned, the amplitude profile is taken as a given.

## Syntax

    [fidelity,gradient,hessian]=grape_phase(phi_profile,amp_profile,spin_system)


## Arguments

  amp_profile   - set of control pulse amplitudes from an amplitude-
phase description.

phi_profile   - set of control pulse phases from an amplitude-phase
description.


## Outputs

  fidelity      - figure of merit for the overlap of the current state
of the system and the desired state(s). When penalty
methods are specified, fidelity is returned as an ar-
ray separating the penalties from the simulation
fidelity.

gradient      - gradient of the fidelity with respect to the control
sequence. When penalty methods are specified, gradi-
ent is returned as an array separating penalty gra-
dients from the fidelity gradient.

hessian       - Hessian of the fidelity with respect to the control
sequence. When penalty methods are specified, gradi-
ent is returned as an array separating penalty Hes-
sians from the fidelity Hessian.


## Examples

A typical call would be from an optimisation function (see examples/optimal_control):

   % Run the optimization
fminnewton(spin_system,@grape_phase,guess);


## Notes

The fidelity, the gradient and the Hessian may be supplied to any optimisation routine, including those in the Optimisation Toolbox of Matlab.