Name

op_fitz — Evaluate the Fitzpatrick function of a given operator on a grid using the LLT2d algorithm.

Calling Sequence

F = op_fitz(A, n, x, xstar)

Parameters

A

matrix. An operator [a;a*] where a and a* are row vectors.

n

integer. The order of the Fitzpatrick function to compute.

x

column vector. The x values of the grid on which the Fitzpatrick function is evaluated.

xstar

column vector. The x* values of the grid on which the Fitzpatrick function is evaluated.

Description

<listitem>

Evaluates the Fitzpatrick function with order n of an operator A on a grid (x,x*).

This function uses a recursive algorithm that employs LLT2d to achieve a running time of O(n*m^2 + m*Nxstar + N). When m==Nx==Nxstar, the running time is O(m^3).

    F(A, 1, x, xstar) = x * xstar'

    F(A, 2, x, xstar) =       max         [ x*astar + a*xstar - a*astar - I(a,astar*) ]
                         (a,astar) in A

    F(A, 3, x, xstar) =       max         [ x*astar2 + a1*xstar + f(a1,astar2) ]
                        (a1,astar2) in A
    f(a1, a2)         =       max         [ -a1*astar1 - a2*astar2 - I(a1,astar1) - I(a2,astar2) ]
                        (astar1,a2) in A

    where I is the indicator function for the set A (I(x)=0 if x is in A, +%inf otherwise).

    m = size(A, 2);
    Nx = size(x, 1);
    Nxstar = size(xstar, 1);
    N = Nx * Nxstar;

</listitem>

Examples

a = -2:2;
astar = 3*a - a + 3;
x = -3:3;
xstar = -3:3;
F1 = op_fitz([a; astar], 1, x, xstar);
F2 = op_fitz([a; astar], 2, x, xstar);
F3 = op_fitz([a; astar], 3, x, xstar);

clf(); alpha=60; theta=-60;
subplot(131); plot3d(x, xstar, F1, alpha=alpha, theta=theta);
subplot(132); plot3d(x, xstar, F2, alpha=alpha, theta=theta);
subplot(133); plot3d(x, xstar, F3, alpha=alpha, theta=theta);
  

See Also

op_fitz_brute , op_fitz_direct , op_fitzinf , plq_fitzinf0 , plq_fitzinf0_direct , plq_rock

Authors

Bryan Gardiner, University of British Columbia, BC, Canada