Esta idea se basa en @PiotrHughes respuesta, que por desgracia no proporciona buenos resultados incluso para el caso sencillo de una función lineal.
Idea: La idea es la siguiente: queremos calcular el gradiente en $P_0 = (x_0,y_0)$ a que los bordes de la $P_i = (x_i,y_i)$$i=1,2,3,...n$. Consideremos los vectores unitarios $d_i$ apuntan desde la $P_0$$P_i$, así que vamos a $r_i = P_i - P_0$$d_i = \frac{1}{||r_i||}(r_i)$.
Entonces el producto escalar $\nabla f(x_0,y_0) \cdot d_i$ es la derivada direccional en la dirección $d_i$. Estas derivadas direccionales se puede aproximar por $$\nabla f(x_0,y_0) \cdot d_i \approx \frac{f(x_i,y_i)-f(x_0,y_0)}{||r_i||}$$
Esto nos da una ecuación para cada borde, y si tenemos al menos dos no colinear bordes podemos resolver este sistema por $\nabla f(x_0,y_0)$ el uso de mínimos cuadrados.
Aplicación:
Podemos simplificar este sistema
$$\begin{bmatrix} x_1-x_0 & y_1-y_0 \\ x_2-x_0 & y_2-y_0 \\ \vdots & \vdots \\ x_n - x_0 & y_n - y_0 \end{bmatrix} \nabla f(x_0,y_0) = \begin{bmatrix} f(x_1,y_1) - f(x_0,y_0) \\ f(x_2,y_2) - f(x_0,y_0) \\ \vdots \\ f(x_n,y_n) - f(x_0,y_0) \end{bmatrix}$$
Convergencia: La única aproximación que hemos hecho es el uso de las diferencias finitas para la aproximación de las derivadas direccionales. Suponiendo que tenemos una regular y cuasi uniforme de la familia de las mallas estos deben coincidir con el orden. Y es, sin duda, proporciona resultados exactos si $f$ es lineal.
EDIT: Equivalentemente, podemos reescribir la ecuación de arriba como
$$\begin{bmatrix} x_1-x_0 & y_1-y_0 & 1\\
x_2-x_0 & y_2-y_0 & 1\\
\vdots & \vdots &\vdots \\
x_n - x_0 & y_n - y_0 & 1\end{bmatrix} \begin{bmatrix} \nabla f(x_0,y_0) \\ f(x_0,y_0)\end{bmatrix}= \begin{bmatrix} f(x_1,y_1) \\ f(x_2,y_2) \\ \vdots \\ f(x_n,y_n) \end{bmatrix}$$
Ahora se hace muy evidente que estamos en el ajuste de un avión a través de los puntos circundantes. Que fue lo que me sugirió como un comentario aquí.