# Envelope of two inter-winding curves [duplicate]

I have the following symmetric curves

Plot[{Exp[-x] Sin[5 x], -Exp[-x] Sin[5 x]}, {x, 0, 2 π}, PlotRange -> All]


I want to join all the maxima and minima, foming envelope above and below the curves. How can this be done?

Edit: plotting an NDSolve result:

{g[x_], xm} = Reap[
NDSolveValue[ {
f''[x] == -2 (5 Cos[5 x] + 12  Sin[5 x] ) E^-x,
f == 0, f' == 5,
WhenEvent[f'[x] == 0 && f''[x] < 0, Sow[{x, f[x]}, 1]],
WhenEvent[f'[x] == 0 && f''[x] > 0, Sow[{x, f[x]}, 2]]},
f[x], {x, 0, 6}]]
Plot[g[x], {x, 0, 5}, Epilog -> {Line /@ xm}, PlotRange -> All] //original version

exp = Exp[-x] Sin[5 x];
top = {#, Abs[exp /. x -> #]} & /@
Sort@Flatten[x /. NSolve[D[exp, x] == 0 && 0 < x < 6 , x]];
Show[{
Plot[Evaluate[exp {1, -1}], {x, 0, 2 \[Pi]}, PlotRange -> All],
ListPlot[{top, {1, -1} # & /@ top}, Joined -> True, PlotRange -> All]
}] Update: For the case where

f1 and f2 are ... numerical solutions to a set of differential equations:

s = NDSolve[{x'[t] == -y[t] - x[t]^2, y'[t] == 2 x[t] - y[t]^3, x == y == 1},
{x, y}, {t, 21}];

ClearAll[f1, f2]
f1[z_] := First[x /. s][z];
f2[z_] := First[y /. s][z];
colors = ColorData[97, "ColorList"][[;; 2]];
plt = Show[Plot[{f1[x], f2[x]}, {x, 0, 20.1}, Filling-> 1 -> {2},  PlotRange -> All],
With[{f = #, col = First[colors = RotateRight[colors]]},
Plot[#[x], {x, 0, 20.1},  PlotStyle -> col,  PlotRange -> All,
PlotRangeClipping -> False, MeshFunctions -> {f'[#] &}, Mesh -> {{0}}]]&/@ {f1, f2}];
Show[plt, ListLinePlot[SortBy[First] /@
GatherBy[Cases[Normal @ plt, Point[x_] :> x, ∞], NonPositive[Last@#]&],
Filling -> Axis, FillingStyle -> Opacity[.3, Yellow], PlotRange -> All,
Mesh -> Full], PlotRange->{{0,20},All}, ImageSize -> 600] f1[x_]:=Exp[-x] Sin[5 x];
f2[x_]:=-Exp[-x] Sin[5 x];
plt = Plot[{f1[x],f2[x]}, {x, 0, 2 π}, PlotRange -> All, Filling -> 1 -> {2},
MeshFunctions -> {f1'[#]&,f2'[#]&}, Mesh->{{0},{0}}];

Show[plt, ListLinePlot[GatherBy[SortBy[Cases[Normal @ plt, Point[x_] :> x, ∞], Last],
Positive[Last @ #]&],
Filling -> Axis, FillingStyle -> Opacity[.5, Yellow],
PlotRange -> Full], PlotRange -> All, ImageSize->600] • thank you. My functions f1 and f2 are actually not so simple. They are numerical solutions to a set of differential equations. I can not post the problem here. Could it be possible for you to contact me at jan1002@rediffmail.com ? – H. Kenan Feb 1 '18 at 21:19
• @user149973, i will post a version in a moment that doesn't rely on symmetry of the two functions. – kglr Feb 1 '18 at 21:34
• I mean, I do not have the functional form of f1 and f2. They are like f1=Evaluate[{....}/.sol]. where sol is the solution for a set of 14 differential equations. – H. Kenan Feb 1 '18 at 21:41
• @user149973 if you are using NDSolve you may want to use WhenEvent to find the extrema for you. – george2079 Feb 1 '18 at 21:41