Хорошо, давайте быстро перепишем то, что вы уже сделали:
Используя ваши f1
и g1
, мы получаем сюжет
plot = Plot[{f1[x], g1[x]}, {x, 0, .75}]

и первый общий касательный в
sol1 = Chop[FindRoot[{(f1[x] - g1[y])/(x - y) == D[f1[x], x] == D[g1[y], y]},
{x, 0.0000001}, {y, .00000001}]]
(* {x -> 0.00840489, y -> 0.105801} *)
Определить функцию
l1[t_] = (1 - t) {x, f1[x]} + t {y, g1[y]} /. sol1
затем вы можете построить касательные с помощью
Show[plot, Graphics[Point[{l1[0], l1[1]}]],
ParametricPlot[l1[t], {t, -1, 2}],
PlotRange -> {{-.2, .4}, {-10000, 10000}}]

Я кратко отмечаю (ради меня), что уравнения, которые вы использовали
(например, для генерации sol1
выше)
исходить из того, что касательная линия для f1
в x
тангенциально достигает g1
в некоторый момент y
, т.е.
LogicalExpand[{x, f[x]} + t {1, f'[x]} == {y, g[y]} && f'[x] == g'[y]]
Чтобы выяснить, где находятся общие касательные, вы можете использовать Manipulate
:
Manipulate[Show[plot, ParametricPlot[{x, f1[x]} + t {1, f1'[x]}, {t, -1, 1}]],
{x, 0, .75, Appearance -> "Labeled"}]
, который производит что-то вроде

Используя значения для глаз для x
и y
, вы можете получить реальные решения, используя
sol = Chop[Table[
FindRoot[{(f1[x] - g1[y])/(x - y) == D[f1[x], x] == D[g1[y], y]},
{x, xy[[1]]}, {y, xy[[2]]}], {xy, {{0.001, 0.01}, {0.577, 0.4}}}]]
определить две касательные линии, используя
l[t_] = (1 - t) {x, f1[x]} + t {y, g1[y]} /. sol
затем
Show[plot, Graphics[Point[Flatten[{l[0], l[1]}, 1]]],
ParametricPlot[l[t], {t, -1, 2}, PlotStyle -> Dotted]]

Этот процесс может быть автоматизирован, но я не уверен, как это сделать эффективно.