A comment too long for the comment box:
The issue seems to be related to the way exclusions are handled by Plot
. Apparently, Plot
internals work as if there is a discontinuity where there is none. The first two examples in the following suggest that forcing Plot
to sample more points does not remove the "discontinuity". The third one (Exclusions->None
) explicitly forces Plot
to treat the line as continuous, and the last one (I think ... somehow) makes Plot
internals "realize" that there are, in fact, no discontinuities in the first argument.
Grid[{{Plot[1/2 (2 a h + (a - h)^2 UnitStep[-a + h]), {h, 4., 6},
PlotPoints -> 50, ImageSize -> 300,
ExclusionsStyle -> Directive[AbsoluteThickness[5], Red],
PlotLabel -> HoldForm[PlotPoints -> 50]],
Plot[1/2 (2 a h + (a - h)^2 UnitStep[-a + h]), {h, 4., 6},
PlotPoints -> 800, ImageSize -> 300,
ExclusionsStyle -> Directive[AbsoluteThickness[5], Red],
PlotLabel -> HoldForm[PlotPoints -> 800]]},
{Plot[1/2 (2 a h + (a - h)^2 UnitStep[-a + h]), {h, 4., 6},
PlotPoints -> 10, ImageSize -> 300, Exclusions -> None,
PlotLabel -> HoldForm[{Exclusions -> None, PlotPoints -> 10}]],
Plot[1/2 (2 a hh + (a - hh)^2 UnitStep[-a + hh]) /. hh -> h, {h, 4., 6},
PlotPoints -> 10, ImageSize -> 300,
ExclusionsStyle -> Directive[AbsoluteThickness[5], Red],
PlotLabel -> HoldForm[{Plot[f[x] /. x -> h, _], PlotPoints -> 10}]]}}]