Prove that: if  $g \in L^{\infty}$, the operator $T$ defined by $Tf = fg$ is bounded on $L^{p}$ for $1\leq p\leq \infty$. Its operator norm is at most $||g||_{\infty}$, with equality if $\mu$ is semifinite, where $\mu$ is the measure on $\mathcal{M}$, the measure space.

My approach: I consider $\hat{g(x)}(f) = f(g(x))$, which is a linear operator on $L^{p}$. Clearly $||\hat{g(x)}||  = ||g(x) || \leq ||g||_{\infty}$ , which gives me the first part of the proof. I am clueless about the second part, involving semifinite measure. 


Question: Numerical differentiation methods
Answer: In my experience almost all finite difference formulas can be implemented very efficiently using ListCorrelate. Let's look at how to implement a few difference formulas in 1D with periodic boundary conditions on a uniform mesh with spacing h:

Central Difference

CDx[v_List, h_]:=ListCorrelate[ {-1, 0, 1}/(2 h), v, 2];


Backward Difference

BDx[v_List, h_] := ListCorrelate[{-1, 1}/(h), v, 2];


Forward Difference

FDx[v_List, h_] := ListCorrelate[{-1, 1}/(h), v];


We can check that they are performing the correct behavior via a simple symbolic test

v = Table[x[i], {i, 1, 5}];
CDx[v, h]
BDx[v, h]
FDx[v, h]


FiniteDifferenceDerivative Function

With that said, there is also a very nice function hidden inside of the NDSolve context called FiniteDifferenceDerivative. Search for "tutorial/NDSolveMethodOfLines" inside of the Documentation Center and look for the section "Spatial Derivative Approximations". This function allows for differentiation on a nonuniform mesh. The user must supply a grid and values. For example the 2D Lapacian operator is implemented via:

lap[vals_, {xgrid_, ygrid_}] :=
NDSolve`FiniteDifferenceDerivative[{2, 0}, {xgrid, ygrid}, vals] +
NDSolve`FiniteDifferenceDerivative[{0, 2}, {xgrid, ygrid}, vals]


Let's test it out:

n = 16;
h = 1.0/n;
xgrid = Table[x, {x, 0, 1 - h, h}];
ygrid = Table[y, {y, 0, 1 - h, h}];
vals = Table[Sin[2 Pi x]*Sin[2 Pi*y], {x, xgrid}, {y, ygrid}];
valsDiff = lap[vals, {xgrid, ygrid}];
(* Plot to see solution *)
ListPlot3D[vals]
ListPlot3D[valsDiff]