在交点处绘制曲线切线

在交点处绘制曲线切线

我正在尝试看看是否有任何方法可以简化以下代码:我有几个函数和一条线。我想在它们与线相交的地方绘制每个函数的切线。

目前一切都是手动完成的:我手动计算了坐标和斜率。我想知道是否有办法简化,特别是考虑到我们可以使用 tikz 库交点获得线和函数的交点。

先谢谢您的帮助。

这是我的代码:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
    [declare function={ f(\x,\a)   = \a/\x;}]

    \begin{axis}[xmin= 0, xmax = 5,ymin=0, ymax = 5,]

    \addplot[black,domain=0.3:4.5,name path= IC1] {f(\x,1)}; 
    \addplot[black,domain=0.7:4.5,name path= IC2] {f(\x,3)}; 
    \addplot[black,domain=1:4.5,name path= IC3] {f(\x,5)}; 

    \addplot[blue,dashed,name path = ray1] {3*\x};

    \path [name intersections={of=ray1 and IC1}]; %not used

    \addplot [blue] coordinates {({sqrt(1/3) + 0.2},{sqrt(3*1) -0.6}) ({sqrt(1/3) - 0.2},{sqrt(3*1) +0.6})};
    \addplot [blue] coordinates {({sqrt(3/3) + 0.2},{sqrt(3*3) -0.6}) ({sqrt(3/3) - 0.2},{sqrt(3*3) +0.6})};
    \addplot [blue] coordinates {({sqrt(5/3) + 0.2},{sqrt(3*5) -0.6}) ({sqrt(5/3) - 0.2},{sqrt(3*5) +0.6})};

    \end{axis}

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

使用tzplot包裹:

在此处输入图片描述

\documentclass[tikz]{standalone}
    
\usepackage{tzplot}

\begin{document}

\begin{tikzpicture}
\tzhelplines(6,6)
\tzaxes(6,6)
% plot graphs
\def\ICa{1/\x}          \def\ICb{3/\x}          \def\ICc{5/\x}
\tzfn\ICa[0.3:4.5]      \tzfn\ICb[0.7:4.5]      \tzfn\ICc[1.0:4.5]
\def\ray{3*\x}
\tzfn[dashed]\ray[0:2]
% intersections
\tzXpoint*{ray}{ICa}(A) \tzXpoint*{ray}{ICb}(B) \tzXpoint*{ray}{ICc}(C)
% tangent lines
\tztangent[blue]{ICa}(A)[.3:.8]
\tztangent[blue]{ICb}(B)[.7:1.3]
\tztangent[blue]{ICc}(C)[1:1.6]
\end{tikzpicture}

\end{document}

相关内容