I'm trying to label all intersection points between 2 functions and a 3rd one in a Plot by using Kuba's second solution from here , but I'm not getting the expected result: there are additional, wrong intersection points and the label letters are not correct positioned. What I'm doing wrong?
opts = {ImageSize -> Large, PlotRange -> {{-3, 3}, {-3, 5}},
PlotPoints -> 84, MaxRecursion -> 9,
MeshFunctions -> {f1[#1] - f3[#1] &, f2[#1] - f3[#1] &},
Mesh -> {{0.}}, MeshStyle -> {Directive[Red, PointSize[Medium]]}};
points = Join[{x, f1[x]} /.
NSolve[f1[x] == f3[x] && -3 < x < 3, x, Reals], {x, f2[x]} /.
NSolve[f2[x] == f3[x] && -3 < x < 3, x, Reals]];
names = FromCharacterCode /@ (Range[Length@points] +
96);
Row[{Plot[{f1[p], f2[p], f3[p]}, {p, -3, 3}, Evaluate@opts,
Epilog -> (Text[Style[#, 15], #2 + {.5, 0}] & @@@
Transpose[{names, points}])],
Grid@MapThread[List, {names, points}]}]
What I'm getting: