A DensityPlot
helps in picking good starting values for FindMaximum
:
DensityPlot[
1/2*Abs[(o - u)^2/(1 + o^2 + u^2 + 2*o*u + 2*o^2*u^2)]^2, {o, -5, 5},
{u, -5, 5}, PlotRange -> All, PlotPoints -> 50, PlotLegends -> Automatic]

Then using the aproximate values from the DensityPlot
FindMaximum
locates one of the points
FindMaximum[
1/2*Abs[(o - u)^2/(1 + o^2 + u^2 + 2*o*u + 2*o^2*u^2)]^2, {{o, -1}, {u, 1}}]
{1., {o -> -0.840896, u -> 0.840896}}
And the other point is at the opposite sign of o
and u
Another option is:
NMaximize[
1/2*Abs[(o - u)^2/(1 + o^2 + u^2 + 2*o*u + 2*o^2*u^2)]^2, {o, u}]
ContourPlot
would help at it appears there are two points that result in a maximum:ContourPlot[ 1/2*Abs[(o - u)^2/(1 + o^2 + u^2 + 2*o*u + 2*o^2*u^2)]^2, {o, -4, 4}, {u, -4, 4}]
$\endgroup$NMaximize[ 1/2*Abs[(o - u)^2/(1 + o^2 + u^2 + 2*o*u + 2*o^2*u^2)]^2, {o, u}]
. $\endgroup$NMaximize[ 1/2*Abs[(o - u)^2/(1 + o^2 + u^2 + 2*o*u + 2*o^2*u^2)]^2, {o, u}, Method -> "RandomSearch"]
finds the other one. $\endgroup$Maximize
works as well, giving both solutions $\endgroup$