pgfplots:如何在另外两个图下方绘制切线图?

pgfplots:如何在另外两个图下方绘制切线图?

假设我想根据下图绘制三个简单的图形:

所需状态的屏幕截图


我该如何绘制这三个图表?我尝试创建类似这样的图表:

最小工作示例(MWE):

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}
    \begin{tikzpicture}
       \begin{axis}[domain=0:1]
         \addplot+[no marks, samples=100] {exp(3*x)};
         \addplot+[no marks, samples=100] {(-exp(3*x)+20)};
       \end{axis}
    \end{tikzpicture}
\end{document}

当前状态截图:

当前状态的截图


问题说明:

但是,我不明白如何找出第三张图的功能,以及如何裁剪这些图并将x它们y对齐到图中的中心。不需要完全精确,我的上层模板的精度就足够了。

怎么做?

答案1

您可以使用函数 f1*f2/(f1+f2) 来获得类似于您描述的结果。为了使代码更清晰,我定义了函数f1f2

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{%
  compat=1.12,
  /pgf/declare function={f1(\x)=exp(3*\x);},
  /pgf/declare function={f2(\x)=-exp(3*\x)+20;},
}
\begin{document}
    \begin{tikzpicture}
       \begin{axis}[domain=0:1]
         \addplot+[no marks, samples=100] {f1(x)};
         \addplot+[no marks, samples=100] {f2(x)};
         \addplot+[no marks, samples=100] {f1(x)*f2(x)/(f1(x)+f2(x))};
       \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

如果您希望函数更紧密地跟随,则可以使用 sqrt(f1^2*f2^2/(f1^2+f2^2)。然后将第三个图替换为

\addplot+[no marks, samples=100] {sqrt(f1(x)*f1(x)*f2(x)*f2(x)/(f1(x)*f1(x)+f2(x)*f2(x)))};

要得到

在此处输入图片描述

稍微更一般地,可以使用指数\a(不必是整数):

 \foreach \a in {1,...,5}{
   \addplot+[no marks, samples=100] {(f1(x)^\a*f2(x)^\a/(f1(x)^\a+f2(x)^\a))^(1/\a)};
 }

在此处输入图片描述

答案2

您在寻找最小值吗?(我稍微改变了一下情节,但您当然可以撤消这种改变。)

\documentclass[border=3.14mm,tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
    \begin{tikzpicture}
       \begin{axis}[domain=0:1]
         \addplot+[no marks, samples=100] {exp(3*x)};
         \addplot+[no marks, samples=100] {(-exp(3*x)+20)};
         \addplot+[no marks, samples=6,smooth]
         {min(exp(3*x),(-exp(3*x)+20))-pi/2};
       \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容