# Forcing a 2D nonlinear fit through a set of points

I am trying to fit a set of data points using exponential functions as the underlying process suggests an exponential decay. The data points are:

Data = {{0, 45, 47.470985540937846}, {11.25, 45, 28.926603746663208}, {22.5, 45, 21.100922312464654}, {33.75, 45, 19.586298820131955}, {45, 45, 20.61469296617216}, {56.25, 45, 13.22733047733328}, {67.5, 45, 15.04549817421857}, {0, -45, 47.470985540937846}, {11.25, -45, 30.898348195602292}, {22.5, -45, 25.616298887206632}, {33.75, -45, 13.586298820131955}, {45, -45, 7.682274408756448}, {56.25, -45, 7.189278298656389}, {67.5, -45,  6.2422716248242445}, {0, -90, 47.470985540937846}, {11.25, -90,  42.1217705017171}, {22.5, -90, 23.02889135596794}, {33.75, -90, 16.89568587415}, {45, -90, 20.074316236399707}, {56.25, -90, 10.835521285855664}, {67.5, -90, 9.5480647096005}, {0, 135,     47.470985540937846},
{11.25, 135, 42.1217705017171}, {22.5, 135, 37.924897966359076}, {33.75, 135, 14.715560286972428}, {45, 135, 10.938733127589437}, {56.25, 135, 9.943015054020854}, {67.5, 135, 8.483339962717427}, {0, -135, 47.470985540937846}, {11.25, -135, 25.19718186432576}, {22.5, -135,     16.584292751724774}, {33.75, -135, 15.68995452}, {45, -135,     18.022090381104746}, {56.25, -135, 19.1032086047036}, {67.5, -135,     13.925686505003004}, {0, 90, 47.470985540937846}, {11.25, 90,     46.10110658757595}, {22.5, 90, 17.886453106268913}, {33.75, 90,     11.102516552321319}, {45, 90, 10.226227434874197}, {56.25, 90,     10.025424605068684}, {67.5, 90, 9.868150529986169}};


I want to force the nonlinear model through all the points $$(0,y,47.470985540937846)$$.

By constraining two points Model[0, -45] == 47.4709.. and Model[0, 45] == 47.4709.., I think I could force the model through the points {0,y,47.470985540937846}:

Model[x_, y_] := a1 Exp[-b1 x] + a2 Exp[-b2 y];

FitModel = NonlinearModelFit[Data, {Model[x, y], Model[0, 45] == 47.470985540937846
&& Model[0, -45] == 47.470985540937846}, {{a1, 40}, {a2, 6},
{b1, 0.05}, {b2, 0.005}}, {x, y}] // Normal


However, my model looks a little underfitted. By forcing my model through {0,y,47.470985540937846}, I get a constant relation along $$y$$ for $$x=0$$ (which I want) but this seems to force a constant relation for all $$x$$. Can anyone suggest a better model for this?.

For this data, it would be better to use interpolation (red surface) than the model (green surface).

Data = {{0, 45, 47.470985540937846}, {11.25, 45,
28.926603746663208}, {22.5, 45, 21.100922312464654}, {33.75, 45,
19.586298820131955}, {45, 45, 20.61469296617216}, {56.25, 45,
13.22733047733328}, {67.5, 45, 15.04549817421857}, {0, -45,
47.470985540937846}, {11.25, -45, 30.898348195602292}, {22.5, -45,
25.616298887206632}, {33.75, -45, 13.586298820131955}, {45, -45,
7.682274408756448}, {56.25, -45, 7.189278298656389}, {67.5, -45,
6.2422716248242445}, {0, -90, 47.470985540937846}, {11.25, -90,
42.1217705017171}, {22.5, -90, 23.02889135596794}, {33.75, -90,
16.89568587415}, {45, -90, 20.074316236399707}, {56.25, -90,
10.835521285855664}, {67.5, -90, 9.5480647096005}, {0, 135,
47.470985540937846}, {11.25, 135, 42.1217705017171}, {22.5, 135,
37.924897966359076}, {33.75, 135, 14.715560286972428}, {45, 135,
10.938733127589437}, {56.25, 135, 9.943015054020854}, {67.5, 135,
8.483339962717427}, {0, -135, 47.470985540937846}, {11.25, -135,
25.19718186432576}, {22.5, -135,
16.584292751724774}, {33.75, -135, 15.68995452}, {45, -135,
18.022090381104746}, {56.25, -135, 19.1032086047036}, {67.5, -135,
13.925686505003004}, {0, 90, 47.470985540937846}, {11.25, 90,
46.10110658757595}, {22.5, 90, 17.886453106268913}, {33.75, 90,
11.102516552321319}, {45, 90, 10.226227434874197}, {56.25, 90,
10.025424605068684}, {67.5, 90, 9.868150529986169}};
Model[x_, y_] := a1 Exp[-b1 x] + a2 Exp[-b2 y] - 47.470985540937846;

f = FitModel =
NonlinearModelFit[Data,
Model[x, y], {{a1, 40}, {a2, 6}, {b1, 0.05}, {b2, 0.005}}, {x, y}]
{f[0, -45], f[0, 45]}
Out[]= {43.0041, 43.1905}

g = Interpolation[Data]
{g[0, 45], g[0, -45]}
Out[]= {47.471, 47.471}