限制函数的余域

限制函数的余域

我有这个代码

    \begin{tikzpicture}
    \def\a{5}
    \draw[->] (-\a,0) -- (+\a,0);
    \draw[->] (0,-\a) -- (0,+\a);
    \draw[thick, red,  samples=100, domain=-.7:3.2] plot ({\x},{ \x*\x*(1-\x)*(3-\x) });   
    \def\E{2}
    \draw[thick, green] (-\a,\E) -- (+\a,\E) node[xshift=0.5cm] {$ E $};
    \end{tikzpicture}

我有这个输出

在此处输入图片描述

如何限制陪域范围?

答案1

有一个专门的绘图包tikz,即pgfplots。其中的一个绘图实现可能是:

示例输出

\documentclass{article}

\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[domain=-.7:3.2, ymin=-1, ymax=1,
    axis x line=middle, axis y line=middle, ticks=none,
    enlarge x limits={rel=0.07}]
    \addplot[thick, red, samples=100] {(x*x*(1-x)*(3-x))};
    \addplot[green] {(.5)} node[right]{$E$};
  \end{axis}
\end{tikzpicture}

\end{document}

您可以将共域限制移动到一个函数,但将它们作为命令的选项\addplot,但您必须使用该选项

restrict y to domain=-1:1

为了在您的示例中获得正确的截止值,您必须增加样本数量:

\documentclass{article}

\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[domain=-.7:3.2,
    axis x line=middle, axis y line=middle, ticks=none,
    enlarge x limits={rel=0.07}]
    \addplot[thick, red, samples=5000, restrict y to domain=-1:1] {(x*x*(1-x)*(3-x))};
    \addplot[green] {(.5)} node[right]{$E$};
  \end{axis}
\end{tikzpicture}

\end{document}

如果要精确控制轴长度,请使用xmin/ xmax/ ymin/ymax并调整各个图上的域:

第二个示例

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=1.15}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[xmin=-5, xmax=5, ymin=-1.2, ymax=1.2,
    axis x line=middle, axis y line=middle, ticks=none]
    \addplot[thick, red, samples=5000,
      domain=-.7:3.2, restrict y to domain=-1:1] {(x*x*(1-x)*(3-x))};
    \addplot[domain=-5:4.2, green] {(.5)} node[right]{$E$};
  \end{axis}
\end{tikzpicture}

\end{document}

答案2

\clip? 环境的目的scope是使 的效果本地化\clip

代码输出

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \def\a{5}
  \def\E{2}
  \draw[->] (-\a,0) -- (+\a,0);
  \draw[->] (0,-\a) -- (0,+\a);
  \begin{scope}
    \clip (-\a,-\a) rectangle (\a,\E);
    \draw[thick, red,  samples=100, domain=-.7:3.2] plot ({\x},{ \x*\x*(1-\x)*(3-\x) });
  \end{scope}
  \draw[thick, green] (-\a,\E) -- (+\a,\E) node[xshift=0.5cm] {$ E $};
\end{tikzpicture}
\end{document}

相关内容