# pylops.optimization.sparsity.fista¶

pylops.optimization.sparsity.fista(Op, y, x0=None, niter=10, SOp=None, eps=0.1, alpha=None, eigsdict=None, tol=1e-10, threshkind='soft', perc=None, decay=None, monitorres=False, show=False, itershow=[10, 10, 10], callback=None)[source]

Fast Iterative Shrinkage-Thresholding Algorithm (FISTA).

Solve an optimization problem with $$L^p, \; p=0, 0.5, 1$$ regularization, given the operator Op and data y. The operator can be real or complex, and should ideally be either square $$N=M$$ or underdetermined $$N<M$$.

Parameters: Op : pylops.LinearOperator Operator to invert y : numpy.ndarray Data x0: :obj:numpy.ndarray, optional Initial guess niter : int, optional Number of iterations SOp : pylops.LinearOperator, optional Regularization operator (use when solving the analysis problem) eps : float, optional Sparsity damping alpha : float, optional Step size. To guarantee convergence, ensure $$\alpha \le 1/\lambda_\text{max}$$, where $$\lambda_\text{max}$$ is the largest eigenvalue of $$\mathbf{Op}^H\mathbf{Op}$$. If None, the maximum eigenvalue is estimated and the optimal step size is chosen as $$1/\lambda_\text{max}$$. If provided, the convergence criterion will not be checked internally. eigsdict : dict, optional Dictionary of parameters to be passed to pylops.LinearOperator.eigs method when computing the maximum eigenvalue tol : float, optional Tolerance. Stop iterations if difference between inverted model at subsequent iterations is smaller than tol threshkind : str, optional Kind of thresholding (‘hard’, ‘soft’, ‘half’, ‘soft-percentile’, or ‘half-percentile’ - ‘soft’ used as default) perc : float, optional Percentile, as percentage of values to be kept by thresholding (to be provided when thresholding is soft-percentile or half-percentile) decay : numpy.ndarray, optional Decay factor to be applied to thresholding during iterations monitorres : bool, optional Monitor that residual is decreasing show : bool, optional Display iterations log itershow : list, optional Display set log for the first N1 steps, last N2 steps, and every N3 steps in between where N1, N2, N3 are the three element of the list. callback : callable, optional Function with signature (callback(x)) to call after each iteration where x is the current model vector xinv : numpy.ndarray Inverted model niter : int Number of effective iterations cost : numpy.ndarray, optional History of cost function NotImplementedError If threshkind is different from hard, soft, half, soft-percentile, or half-percentile ValueError If perc=None when threshkind is soft-percentile or half-percentile

OMP
ISTA
SPGL1
SplitBregman