## Name

plq_fitzinf0 — Compute the PLQ Fitzpatrick function of infinite order of an operator on an (x,0) grid using Rockafellar functions.

## Calling Sequence

    F = plq_fitzinf0(B)

## Parameters

B

  matrix. A matrix [a;bm;bp] where a, bm (b-), and bp (b+) are row vectors as defined below.

## Description

<listitem>

Compute the PLQ Fitzpatrick function of infinite order of an operator A on a grid (x,0) as a maximum over Rockafellar functions, where B is defined as:

        B : x -> conv(A*x):
              m
            union ( {a(i)} cross [bm(i),bp(i)] )
             i=1

        with a(1) < a(2) < ... < a(m),
             bm(1) <= bp(1) <= bm(2) <= bp(2) <= ... <= bm(m) <= bp(m),
             a(0) = bm(0) = bp(0) = -%inf,
             a(m+1) = bm(m+1) = bp(m+1) = %inf,
             m = size(B,2).

This function computes the PLQ Fitzpatrick function in optimal linear time by iterating only over i and using an explicit formula to calculate the maximum over k at each step. See also plq_fitzinf0_direct, which is an unoptimized version of plq_fitzinf0.

        F(A, %inf, x, 0) =    sup     [ R(A,a(k))(x) ]
                           a in Dom A

        R(A, k)(x) = { (x-a(i))*bm(i) + sum(j=i+1:k, (a(j-1)-a(j))*bm(j)) , if a(i-1) < x <= a(i) <= a(k)
                     { (x-a(i))*bp(i) + sum(j=k:i-1, (a(j+1)-a(j))*bp(j)) , if a(k) <= a(i) <= x <= a(i+1)

</listitem>

## Examples

    a = -4:4;
    bm = [-15,-13,-10,-7,-6,-4,0.5,1,1];
    bp = [-13,-11,- 8,-6,-5, 0,  1,1,2];
    B = [a;bm;bp];
    x = -6:6;
    F = plq_fitzinf0(B),
    plq_eval(F, x),

## See Also

op_fitz_brute , op_fitz_direct , op_fitz , op_fitzinf , plq_fitzinf0_direct , plq_rock

## Authors

`Bryan Gardiner`, University of British Columbia, BC, Canada