mathematica绘制函数的公切线

一个无聊时的小作品.

1
2
3
4
5
f[x_] := Log[x]; g[x_] := x^2;
f1[x_] := f'[x]; g1[x_] := g'[x];
a = NSolve[{g1[x2] (x1 - x2) + g[x2] == f[x1], g[x2] == f1[x1] (x2 - x1) + f[x1], f1[x1] == g1[x2]}, {x1, x2},Reals] // Union;(*两点确定一条直线,x=x1,x=x2*)
Length[a](*给出公切线条数*)
Show[Plot[{f1[x1] (x - x1) + f[x1] /. a, f[x], g[x]}, {x, -2, 5}, PlotLegends ->{"y=f(x)","y=g(x)","公切线"}](*绘图*),ListPlot[{{x1, f[x1]} /. a, {x2, g[x2]} /. a}]](*绘制切点*)

下图为$y=f(x)=x^2$和$y=g(x)=ln x$的公切线