f[x_,y_]=100 Exp[-(((x^2)+3(y^2))/701)];

ContourPlot[f[x,y],{x,-40,40},{y,-40,40},ContourLabels->True]

Plot3D[f[x,y],{x,-80,80},{y,-80,80},RegionFunction->Function[{x,y,z},f[x,y]≥ 0.5],MeshFunctions->(f[#1,#2]&),PlotStyle->Opacity[0.3],Boxed->False,BoxRatios->Automatic,PlotPoints->50,PlotRange->All]

N[f[30,20]]

a=Show[ContourPlot[f[x,y],{x,-40,40},{y,-40,40},ContourShading->False,ContourLabels->True,GridLines->Automatic],ContourPlot[f[x,y]==f[30,20],{x,-40,40},{y,-40,40},ContourStyle->{Thick,Gray}],Graphics[{PointSize[Large],Black,Point[{30,20}],Arrow[{{{30,-30},{30,30}},{{10,20},{39,20}}}],Text[Style["N",Large],{30,33}],Text[Style["S",Large],{30,-34}],Text[Style["O",Large],{7,20}],Text[Style["L",Large],{38,23}]}]]

gradf[x_,y_]=Together[Grad[f[x,y],{x,y}]]

N[gradf[30,20]]

u=%/Norm[%]

θ=ArcCos[u.{0,1}]/Degree

α=ArcTan[N[Norm[gradf[30,20]]]]/Degree

β=ArcTan[N[gradf[30,20].{-1,0}]]/Degree

Show[a,StreamPlot[gradf[x,y],{x,-40,40},{y,-40,40}],Graphics[{{PointSize[Large],Blue,Thick,Arrow[{{30,20},{30,20}+10gradf[30,20]}],Circle[{30,20},5Norm[gradf[30,20]],{π/2,(π/2)+θ Degree}],Text[Style["θ",Large],{25,25}],Text[Style["∇f",Large],{25,8}]},{Red,Thick,Arrow[{{30,20},{15,20}}],Text[Style["j",Large],{15,17}]}}]]

tronco=Plot3D[f[x,y],{x,-80,80},{y,-50,50},MeshFunctions->(#3&),RegionFunction->Function[{x,y,z},0.5≤z≤10],PlotStyle->Opacity[0.3],BoxRatios->{(Sqrt[3]),1,0.5}]

γ1[t_]={30,20}+t gradf[30,20];

γmax=ParametricPlot3D[{γ1[t][[1]],γ1[t][[2]],f[γ1[t][[1]],γ1[t][[2]]]},{t,0,3},PlotStyle->{Blue,Thick}];

γ2[t_]={30,20}+t {-1,0};

γoeste=ParametricPlot3D[{γ2[t][[1]],γ2[t][[2]],f[γ2[t][[1]],γ2[t][[2]]]},{t,0,6},PlotStyle->{Red,Thick}];

Show[tronco,γmax,γoeste,Graphics3D[{PointSize[Large],Black,Thick,Point[{30,20,f[30,20]}]}],Boxed->False]