我正在尝试重新创建轨迹图来展示稳定性。我脑海中的图像类似于下图:
问题是,我真的不知道如何生成线轨迹,因为我没有任何可以依赖的数值数据。只要轨迹表现出渐近行为,其形式就无关紧要。最好看起来像图中那样。我将在以下代码中附上我目前的进展:
\documentclass[tikz]{standalone}
\usepackage{geometry}
\usepackage{pgfplots}
\usepackage{bm}
\usetikzlibrary{3d,calc}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}%[show grid=all]
% background
\path[name path=C] (-1.5,1.75) -- (1.5,3.25);
\path[name path=D] (-1.5,-1.5) -- (1.5,0.5);
\tikzfillbetween[of=C and D]{top color=gray!10!white, bottom color=white, opacity=0.02};
% axis
\draw[gray!50!white,->,very thick,>=latex] (0,-0.5) -- (0,2.5);
\draw[gray!50!white,->,very thick,>=latex] (1.5,1.75) -- (-1.5,0.25);
\draw[gray!50!white,->,very thick,>=latex] (0,1) -- (7,1);
\filldraw[black] (0,1) circle (1.2pt);
\filldraw[black] (6,1) circle (1.2pt);
\draw[blue!50!white,dashed,very thick] (0,0) arc (-90:90:0.6cm and 1cm);
\draw[blue!50!white,thick] (0,0) arc (-90:90:-0.6cm and 1cm);
\draw[blue!50!white,thick] (6,0.5) arc (-90:90:-0.4cm and 0.5cm);
\draw[blue!50!white,thick] (6,0.5) arc (-90:90:0.4cm and 0.5cm);
\draw[blue!50!white,thick,name path = A] (0,2) to[in=180,out=-12] (6,1.5);
\draw[blue!50!white,thick,name path = B] (0,0) to[in=180,out=12] (6,0.5);
\tikzfillbetween[of=A and B]{blue!50!white, opacity=0.2};
\shade[left color=blue!50!white,right color=blue!50!white,opacity=0.2] (0,0) arc (-90:90:-0.6cm and 1cm);
\shade[left color=blue!50!white,right color=blue!50!white,opacity=0.2] (6,0.5) arc (-90:90:0.4cm and 0.5cm);
% axis labels
\node at (0,2.9) {$\varphi_{1}(t)$};
\node at (-2,0.21) {$\varphi_{2}(t)$};
\node at (7.15,1) {$t$};
\draw[thick,->,>=latex] (0,1) -- (0,2) node [midway,scale=0.9,right]{$\delta$};
\draw[thick,->,>=latex] (6,1) -- (6,1.5) node [midway,scale=0.9,right]{$\varepsilon$};
\draw[dashed,blue] (-0.3,1.35) -- (-2,2.5) node [pos=1.2,text=black,scale=0.9]{$\bm{\varphi}(0)$};
% trajectory
\filldraw[blue!90!white] (-0.3,1.35) circle (1.2pt);
% border adjustment (standalone crop problems)
\node at (0,-2.3) {$$};
\node at (8,0) {$$};
\end{tikzpicture}
\end{document}
答案1
我能够使用 绘制循环:轨迹和方向 绘制以下轨迹:
以下是代码:
\documentclass[tikz]{standalone}
\usepackage{geometry}
\usepackage{pgfplots}
\usepackage{bm}
\usetikzlibrary{3d,calc}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{arrows.meta,hobby}
\begin{document}
\begin{tikzpicture}[use Hobby shortcut]%[show grid=all]
\tikzset{axisArrow/.style={gray!50!white,very thick,>=stealth,arrows={->[fill=black]}}}
% background
\path[name path=C] (-1.5,1.75) -- (1.5,3.25);
\path[name path=D] (-1.5,-1.5) -- (1.5,0.5);
\tikzfillbetween[of=C and D]{top color=gray!10!white, bottom color=white, opacity=0.02};
% axis
\draw[axisArrow] (0,-0.5) -- (0,2.5);
\draw[axisArrow] (1.5,1.75) -- (-1.5,0.25);
\draw[axisArrow] (0,1) -- (7,1);
\filldraw[black] (0,1) circle (1.2pt);
\filldraw[black] (6,1) circle (1.2pt);
\draw[blue!50!white,dashed, thick] (0,0) arc (-90:90:0.6cm and 1cm);
\draw[blue!50!white,thick] (0,0) arc (-90:90:-0.6cm and 1cm);
\draw[blue!50!white,thick] (6,0.5) arc (-90:90:-0.4cm and 0.5cm);
\draw[blue!50!white,thick] (6,0.5) arc (-90:90:0.4cm and 0.5cm);
\draw[blue!50!white,thick,name path = A] (0,2) to[in=180,out=-12] (6,1.5);
\draw[blue!50!white,thick,name path = B] (0,0) to[in=180,out=12] (6,0.5);
\tikzfillbetween[of=A and B]{blue!50!white, opacity=0.2};
\shade[left color=blue!50!white,right color=blue!50!white,opacity=0.2] (0,0) arc (-90:90:-0.6cm and 1cm);
\shade[left color=blue!50!white,right color=blue!50!white,opacity=0.2] (6,0.5) arc (-90:90:0.4cm and 0.5cm);
% axis labels
\node at (0,2.9) {$\varphi_{1}(t)$};
\node at (-2,0.21) {$\varphi_{2}(t)$};
\node at (7.15,1) {$t$};
\node[scale=0.7] at (5,1.65) {$t\rightarrow \infty$};
\draw[thick,->,>=stealth] (0,1) -- (0,2) node [midway,scale=0.9,right]{$\delta$};
\draw[thick,->,>=stealth] (6,1) -- (6,1.5) node [midway,scale=0.9,right]{$\varepsilon$};
\draw[dashed,blue] (-0.3,1.35) -- (-2,2.5) node [pos=1.2,text=black,scale=0.9]{$\bm{\varphi}(0)$};
% trajectory
\filldraw[blue!90!white] (-0.3,1.35) circle (1.2pt);
\draw[-stealth,blue!90!white,thick] (-0.3,1.35) .. (1,0.5) .. (1.75,1.4) .. (1.5,1.2) .. (2,1.2) .. (2.5,1.1) .. (3,0.9) .. (3,1) .. (4,1) .. (4.3,1) .. (4.8,1) -- (5.55,1);
% border adjustment (standalone crop problems)
\node at (0,-2.3) {$$};
\node at (8,0) {$$};
\end{tikzpicture}
\end{document}