如何在 LaTeX 中绘制最大/最小函数?

如何在 LaTeX 中绘制最大/最小函数?

我希望在 tiki 或 pgfplots 中自动绘制最大/最小函数,这意味着无需手动将整个图形拆分为漂亮的函数并根据其域绘制它们。一个具体的例子是简单地绘制min(2*x,3*y)。我尝试使用轮廓图方法绘制它:

\documentclass{standalone}
\usepackage{pgfplots}

\pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture}
  \begin{axis}
    \addplot+[mark=none] function[raw gnuplot] {
      set contour base;
      set cntrparam levels discrete 0.0;
      unset surface;
      set view map;
      set isosamples 500;
      splot min(3*x,2*y);
    };
  \end{axis}
\end{tikzpicture}

\end{document}

但这完全失败了,到底是哪里出了问题?

如果 pgfplots 无法做到这一点,是否可以使用现有的库为其他编程语言中绘制的函数图生成 tikz 代码。我知道我们在 R 中有 tikiDevice,但我们可以在 R 中绘制最大最小函数吗?更重要的是,有没有更好的 CAS 系统可以生成隐式函数图并输出 tikz 代码?(我希望能够标记函数上的点)

答案1

您只能使用 x 进行绘图。您的输入是 x,y 是相对于该 x 进行绘图的。您正在绘制 y=3*x(基于代码),但您无法绘制 y=2*y。您想要 x=2*y 吗?然后绘制 y=x/2,或输入 x/2。对于正数,x/2 总是小于 x*3,但它们在 0 处相等,对于负数则相反。

您还可以绘制圆形等形状,但您仍需要用 x 来表示。如果您想要绘制 x^2 + y^2 = 2,则需要绘制 y = (2-x^2)^.5(如果 y 低于 0,则减去该值)。

\documentclass{standalone}
\usepackage{pgfplots}

\pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture}[domain=-8:8]

\begin{axis}
\addplot[draw=red]{3*x};
\addplot[draw=blue]{x/2}; % this is the same as x = y*2
\addplot[draw=green]{min(3*x,x/2)-.5};% subtracted 0.5 to not overlap
\end{axis}

\end{tikzpicture}

\end{document}

在此处输入图片描述

如果你确实在寻找一个 3d 图,其中 x 和 y 与 z 绘制在一起,你可能需要这样的东西(我可能误解了这个问题)。

\documentclass{standalone}
\usepackage{tikz,pgfplots}

\pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture}
   \begin{axis}[samples=10,view={30}{45}]
    \addplot3[surf, domain=-2:2] {min(x*3,y*2)};
   \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容