douglas_rachford_pd_stepsize

odl.solvers.nonsmooth.douglas_rachford.douglas_rachford_pd_stepsize(L, tau=None, sigma=None)[source]

Default step sizes for douglas_rachford_pd.

Parameters
Lsequence of Operator or float

The operators or the norms of the operators that are used in the douglas_rachford_pd method. For Operator entries, the norm is computed with Operator.norm(estimate=True).

taupositive float, optional

Use this value for tau instead of computing it from the operator norms, see Notes.

sigmatuple of float, optional

The sigma step size parameters for the dual update.

Returns
taufloat

The tau step size parameter for the primal update.

sigmatuple of float

The sigma step size parameters for the dual update.

Notes

To guarantee convergence, the parameters \tau, \sigma_i and L_i need to satisfy

\tau \sum_{i=1}^n \sigma_i \|L_i\|^2 < 4.

This function has 4 options, \tau/\sigma given or not given.

  • If neither \tau nor \sigma are given, they are chosen as:

    \tau = \frac{1}{\sum_{i=1}^n \|L_i\|},
\quad
\sigma_i = \frac{2}{n \tau \|L_i\|^2}

  • If only \sigma is given, \tau is set to:

    \tau = \frac{2}{\sum_{i=1}^n \sigma_i \|L_i\|^2}

  • If only \tau is given, \sigma is set to:

    \sigma_i = \frac{2}{n \tau \|L_i\|^2}

  • If both are given, they are returned as-is without further validation.