如何绘制由 f(x) 定义的坐标路径

如何绘制由 f(x) 定义的坐标路径

我正在写有关固定点的内容,我想在 tikz 中制作不带标签的图像。

在此处输入图片描述

有没有办法定义f这样的函数x --> x*(4-x)和递归

\begin{tikzpicture}
\draw (0,4) -- (0,0) -- (4,0);
\draw[dashed] (0,0) -- (4,4);
\draw[smooth,samples=100,domain=0:4] plot(\x,{(\x)*(4.0-(\x))});
\draw[dotted,->] (0.04,0) -- (0.04,f(0.04));
\foreach n \in {1,2,3,4,5}
\draw[dotted,->] (f^n(0.04),f^{n+1}(0.04))--(f^{n+1}(0.04),f^{n+1}(0.04)); 
\end{tikzpicture}

编辑感谢 Andrew 对函数 f 的修正。

答案1

您可以使用\pgfmathparse(或\pgfmathsetmacro如下所示)在运行 pgf\foreach循环时递归计算您的函数。当然,您需要在进行过程中“保存”之前的值。

您的问题似乎同时使用了函数x(4-x)x(4-x)/2,所以我坚持使用第一个。当然,它对的初始值非常敏感:

在此处输入图片描述

以下是代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,decorations.markings}
\tikzset{% style to put arrow head in middle of line
  ->-/.style={decoration={markings, mark=at position 0.5 with {\arrow{stealth}}},
              postaction={decorate}},
}
\begin{document}

  \begin{tikzpicture}
    \draw[thin,->] (0,0) -- (4.5,0);
    \draw[thin,->] (0,0) -- (0,4.5);
    \draw[dashed] (0,0) -- (4,4);
    \draw[blue,thick,smooth,samples=100,domain=0:4] plot(\x,{(\x)*(4.0-(\x))});
    \def\fn{0.2}% initial value
    \draw[dashed](\fn,0)node[below=1mm]{$\fn$}--(\fn,\fn);
    \foreach \n in {1,...,8} {
      \pgfmathsetmacro\fnn{\fn*(4-\fn)}% compute the next value
      \draw[dotted,->-](\fn,\fn)--(\fn,\fnn);
      \draw[dotted,->-](\fn,\fnn)--(\fnn,\fnn);
      \xdef\fn{\fnn}% save value - need \xdef to force expansion
    }
  \end{tikzpicture}

\end{document}

相关内容