蛛网图有偏移迭代/修改工作分段函数导致混乱

蛛网图有偏移迭代/修改工作分段函数导致混乱

我对以下 tikz 代码有疑问(也许,在阅读本文时,首先跳过代码并阅读最后的问题),它会创建蛛网图:

 \documentclass{article}
 \usepackage{tikz, fullpage}
 \usetikzlibrary{arrows}
 \begin{document}
 \thispagestyle{empty}
 \begin{figure}[htbp]
 \centering 
 \newcounter{j}

 \pgfmathdeclarefunction{p}{1}{  
    \pgfmathparse{#1 > 0.5 ? 1 : ( #1 >0.25 ? 0.2 : 2* #1 )}   %change
 } 

 \begin{tikzpicture}[>=latex',scale=10]         
    \draw[color=blue,style=thick,domain=0:1] plot (\x,{p(\x)});   %change       
    \draw[color=green](0,0)--(1,1);    %change
    \draw[->](0,0)--(0,1) node[above]{$y$};
    \draw[->](0,0)--(1,0) node[right]{$x$};    
    \newcounter{cnt}        
    \newcommand{\x}{.3}    %change
    \foreach \i in {1,...,4}{    
        \pgfmathparse{(p(\x)}       
        \let\y\pgfmathresult   
        \draw[color=magenta](\x,\x)--(\x,\y)--(\y,\y);     
        \draw[color=orange,dotted,line width=0.8pt]
            (\x,\x)--(\x,0) node[below=8pt]{$u_\i$};         
        \pgfmathsetcounter{j}{\i+1}
        \draw[color=blue,dotted,line width=0.8pt]       
             (\x,\y)--(0,\y) node[left=8pt] {$u_\thej$};
        \global\let\x\y}   
        \end{tikzpicture}
 \caption{description} %change
 \end{figure}  
 \pgfmathdeclarefunction{p}{1}{
    \pgfmathparse{(and(#1>0, #1<1))}
 }

 \end{document}

我刚才问过问题,关于如何创建这样的图表,我得到了一些非常好的答案,我接受了其中一个使用 tikz 来做到这一点。现在的问题是:如果我编译代码分段图表,接受的答案看起来不错(就像接受的答案中相应代码的图形一样)。但如果我稍微更改该代码(我在进行更改的行中写入 %change;请注意,我对 tikz 几乎一无所知,所以我只是在各个地方更改了该代码,观察了它的作用,从而将该代码塑造成现在的代码以满足我的需求),输出看起来很糟糕/很糟糕:

破碎的蜘蛛网

我认为最明智的改变是,我正在改变我的分段函数(因为所有其他的改变只涉及改变图的域、“蜘蛛网”的迭代次数和迭代开始的域点)从

 \pgfmathdeclarefunction{p}{1}{%
   \pgfmathparse{#1>0.5 ? 1 : 2*#1 }%    
 } 

 \pgfmathdeclarefunction{p}{1}{ 
        \pgfmathparse{#1 > 0.5 ? 1 : ( #1 >0.25 ? 0.2 : 2* #1 )}   
      }

由于原始代码的所有其他更改来自这里与原始分段函数一起工作。

我定义的分段函数在上面的图中看起来仍然没问题(这意味着函数的定义与其图相对应),但问题是洋红色与橙色和蓝色投影一起迭代,它们以某种方式偏移 - 并且图本身不再居中。请帮我问题:我怎样才能使迭代/情节再次看起来正常

(有趣的是,如果我编译文档,得到的是 *.ps 格式而不是 *.pdf 格式(我使用的是 texmaker -> 上述输出是使用“pdflatex”然后“view pdf”编译的),迭代不再偏移,并且图居中,但是所有的投影突然都向右偏移了很多)

答案1

您的问题来自 的定义p。您忘记了括号后的 %,我认为它是 #1 < 0.25而不是#1 > 0.25但也许您可以给出数学定义。如果您采用下一个定义,您将得到相同的图表。

 \pgfmathdeclarefunction{p}{1}{%  
    \pgfmathparse{#1 > 0.5 ? 1 : ( #1 < 0.25 ? 0.2 : 2* #1 )}   %change
 }  

也许一个解决方案

\documentclass{article}
 \usepackage{tikz, fullpage}
 \usetikzlibrary{arrows}
 \begin{document}
 \thispagestyle{empty}

 \newcounter{j}

\begin{tikzpicture}[>=latex',scale=10,%
   declare function={%
         p(\t)=  greater(\t,0.5)  ? 1 : ( less(\t,0.25) ? 0.2 : 2* \t );}]         
    \draw[color=blue,style=thick,domain=0:1] plot (\x,{p(\x)});   %change       
    \draw[color=green](0,0)--(1,1);    %change
    \draw[->](0,0)--(0,1) node[above]{$y$};
    \draw[->](0,0)--(1,0) node[right]{$x$};    
    \newcounter{cnt}        
    \newcommand{\x}{.3}    %change
    \foreach \i in {1,...,2}{    
        \pgfmathparse{(p(\x)}       
        \let\y\pgfmathresult   
        \draw[color=magenta](\x,\x)--(\x,\y)--(\y,\y);     
        \draw[color=orange,dotted,line width=0.8pt]
            (\x,\x)--(\x,0) node[below=8pt]{$u_\i$};         
        \pgfmathsetcounter{j}{\i+1}
        \draw[color=blue,dotted,line width=0.8pt]       
             (\x,\y)--(0,\y) node[left=8pt] {$u_\thej$};
        \global\let\x\y}   
        \end{tikzpicture}  

 \end{document}   

在此处输入图片描述

相关内容