我正在写有关固定点的内容,我想在 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}