Plot showing discontinuity where it shouldn't
The solution is to use Exclusions->None
as option to Plot
.
The gap happens exactly where UnitStep[-a+h]
has its discontinuity
With[{a = 5},
Plot[{1/2 (2 a H + (a - H)^2 UnitStep[-a + H]),
UnitStep[-a + H] + 25}, {H, 4.9, 5.1}]
]
This behavior was introduced, when Wolfram decided, that discontinuities should be discontinuous displayed in Plot
. When you look at the function, to see whether or not there is a crack, you should use Limit
. Here you see, that the derivative is the same from both directions
With[{a = 5},
Limit[D[1/2 (2 a H + (a - H)^2 UnitStep[-a + H]), H], H -> 5,
Direction -> #]
] & /@ {1, -1}
(* {5, 5} *)
Therefore, it seems 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}]]}}]