![在 LaTeX 上绘制迹行列式图](https://linux22.com/image/347159/%E5%9C%A8%20LaTeX%20%E4%B8%8A%E7%BB%98%E5%88%B6%E8%BF%B9%E8%A1%8C%E5%88%97%E5%BC%8F%E5%9B%BE.png)
TikZ
我想知道如果我们可以使用或 LaTeX 上的任何其他包 来绘制迹行列式图,那将会多么美丽。
图片来源
編輯:这是我的 MWE:
\documentclass[10pt]{article}
\usepackage{pgf,tikz}
\usetikzlibrary{arrows}
\usepackage{mathrsfs}
\usepackage{amssymb,fancyhdr,txfonts,pxfonts}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[%
line cap=round,
line join=round,
>=triangle 45,
x=1.0cm,
y=1.0cm%
]
\clip(-5.8,-3.58) rectangle (5.56,5.64);
\draw [line width=1.2pt] (0.,4.68)-- (0.,-0.74);
\draw [line width=1.2pt] (-4.,0.)-- (4.3,0.);
\draw [thick, domain=-2:2] plot (\x, {\x*\x});
\draw (3.62,-0.12) node[anchor=north west] {$\mbox{tr}$};
\draw (0.18,4.78) node[anchor=north west] {$\Delta$};
\draw(0.,2.88) circle (0.3255764119219941cm);
\draw(0.,2.88) circle (0.4833218389437828cm);
\draw(0.,2.88) circle (0.6403124237432849cm);
\draw (1.,-1.)-- (-1.,-3.);
\draw (-1.,-1.)-- (1.,-3.);
\draw [dash pattern=on 2pt off 2pt] (-1.,-2.)-- (1.,-2.);
\draw [dash pattern=on 2pt off 2pt] (0.,-1.)-- (0.,-3.);
\end{tikzpicture}
\end{document}
答案1
% Poincaré Diagram: Classification of Phase Portaits in the (det A,Tr A)-plane
% Author: Gernot Salzer
% Based on a drawing by Douglas R. Hundley, people.whitman.edu/~hundledr/courses/M244/Poincare.pdf
\documentclass[border=1mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings,arrows}
\tikzset
{every pin/.style={pin edge={<-}}
,>=stealth
,flow/.style=
{decoration=
{markings
,mark=at position #1 with {\arrow{>}}
}
,postaction={decorate}
}
,flow/.default=0.5
}
\newcommand\inlayscale{}
\newcommand\inlaycaption[1]{{\sffamily\scriptsize#1}}
\newcommand\newinlay[4][0.18]%
{\renewcommand\inlayscale{#1}%
\newsavebox#2%
\savebox#2%
{\begin{tabular}{@{}c@{}}
#4\\[-1ex]
\inlaycaption{#3}\\[-1ex]
\end{tabular}%
}%
}
\newcommand\inlay[1]{\usebox{#1}}
\newcommand\Tr{\mathop{\mathrm{Tr}}}
\newinlay\saddle{saddle}%
{\begin{tikzpicture}[scale=\inlayscale]
\foreach \sx in {+,-}
{\draw[flow] (\sx4,0) -- (0,0);
\draw[flow] (0,0) -- (0,\sx4);
\foreach \sy in {+,-}
\foreach \a/\b/\c/\d in {2.8/0.3/0.7/0.6,3.9/0.4/1.3/1.1}
\draw[flow] (\sx\a,\sy\b)
.. controls (\sx\c,\sy\d) and (\sx\d,\sy\c)
.. (\sx\b,\sy\a);
}
\end{tikzpicture}%
}
\newinlay\sink{sink}%
{\begin{tikzpicture}[scale=\inlayscale]
\foreach \sx in {+,-}
{\draw[flow] (\sx4,0) -- (0,0);
\draw[flow] (0,\sx4) -- (0,0);
\foreach \sy in {+,-}
\foreach \a/\b in {2/1,3/0.44}
\draw[flow,domain=\sx\a:0] plot (\x, {\sy\b*\x*\x});
}
\end{tikzpicture}%
}
\newinlay\source{source}%
{\begin{tikzpicture}[scale=\inlayscale]
\foreach \sx in {+,-}
{\draw[flow] (0,0) -- (\sx4,0);
\draw[flow] (0,0) -- (0,\sx4);
\foreach \sy in {+,-}
\foreach \a/\b in {2/1,3/0.44}
\draw[flow,domain=0:\sx\a] plot (\x, {\sy\b*\x*\x});
}
\end{tikzpicture}%
}
\newinlay\stablefp{line of stable fixed points}%
{\begin{tikzpicture}[scale=\inlayscale]
\draw (-4,0) -- (4,0);
\foreach \s in {+,-}
{\draw[flow] (0,\s4) -- (0,0);
\foreach \x in {-3,-2,-1,1,2,3}
\draw[flow] (\x,\s3) -- (\x,0);
}
\end{tikzpicture}%
}
\newinlay\unstablefp{line of unstable fixed points}%
{\begin{tikzpicture}[scale=\inlayscale]
\draw (-4,0) -- (4,0);
\foreach \s in {+,-}
{\draw[flow] (0,0) -- (0,\s4);
\foreach \x in {-3,-2,-1,1,2,3}
\draw[flow] (\x,0) -- (\x,\s3);
}
\end{tikzpicture}%
}
\newinlay\spiralsink{spiral sink}%
{\begin{tikzpicture}[scale=\inlayscale]
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\draw[samples=100,smooth,domain=27:7] plot ({\x r}: {0.005*\x*\x});
\draw[->] ({26 r}: {0.005*26*26}) -- +(0.01,-0.01);
\end{tikzpicture}%
}
\newinlay\spiralsource{spiral source}%
{\begin{tikzpicture}[scale=\inlayscale]
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\draw [samples=100,smooth,domain=10:28] plot ({-\x r}: {0.005*\x*\x});
\draw[<-] ({-27.5 r}: {0.005*27.5*27.5}) -- +(0.01,-0.008);
\end{tikzpicture}%
}
\newinlay[0.15]\centre{center}%
{\begin{tikzpicture}[scale=\inlayscale]
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\foreach \r in {1,2,3} \draw[flow=0.63] (\r,0) arc (0:-360:\r cm);
\end{tikzpicture}%
}
\newinlay\degensink{degenerate sink}%
{\begin{tikzpicture}[scale=\inlayscale]
\draw (0,-4) -- (0,4);
\draw[flow] (-4,0) -- (0,0);
\draw[flow] (4,0) -- (0,0);
\draw[flow] (-3.5,3.5) .. controls (4,1.5) and (4,1).. (0,0);
\draw[flow] (3.5,-3.5) .. controls (-4,-1.5) and (-4,-1) .. (0,0);
\draw[flow] (-3.5,2.5) .. controls (2,1) and (2,0.8).. (0,0);
\draw[flow] (3.5,-2.5) .. controls (-2,-1) and (-2,-0.8) .. (0,0);
\end{tikzpicture}%
}
\newinlay\degensource{degenerate source}%
{\begin{tikzpicture}[scale=\inlayscale]
\draw (0,-4) -- (0,4);
\draw[flow] (0,0) -- (-4,0);
\draw[flow] (0,0) -- (4,0);
\draw[flow] (0,0) .. controls (4,1.5) and (4,1).. (-3.5,3.5);
\draw[flow] (0,0) .. controls (-4,-1.5) and (-4,-1) .. (3.5,-3.5);
\draw[flow] (0,0) .. controls (2,1) and (2,0.8).. (-3.5,2.5);
\draw[flow] (0,0) .. controls (-2,-1) and (-2,-0.8) .. (3.5,-2.5);
\end{tikzpicture}%
}
\begin{document}
\begin{tikzpicture}[line cap=round,line join=round]
% Main diagram
\draw[line width=1pt,->] (0,-0.3) -- (0, 4.7) coordinate (+y);
\draw[line width=1pt,->] (-5,0) -- ( 5,0) coordinate (+x);
\draw[line width=1pt, domain=-4:4] plot (\x, {0.25*\x*\x});
\node at (+y) [label={[above,yshift=0.8cm]%
{\sffamily\large Poincar\'e Diagram: Classification of Phase Portaits
in the $(\det A,\Tr A)$-plane}}] {};
\node at (+x) [label={[right,yshift=-0.5ex]$\scriptstyle\Tr A$}] {};
\node at (+y) [label={[above]$\scriptstyle\det A$}] {};
\node at (-4,4) [pin={[above]$\scriptstyle\Delta=0$}] {};
\node at ( 4,4) [pin={[above,align=left]{%
$\scriptstyle\Delta=0$:\\
$\scriptstyle\det A=\frac{1}{4}(\Tr A)^2$}}] {};
% inlays
\node at (0,-1.4) {\inlay\saddle};
\node at (0,1.2)
[pin={[draw,right,xshift=0.3cm]\inlay\centre}] {};
\node at (0,0)
[pin={[draw,above left,align=center,xshift=-0.3cm]%
\inlaycaption{uniform}\\[-1ex]\inlaycaption{motion}}] {};
\node at (-4,1) {\inlay\sink};
\node at ( 4,1) {\inlay\source};
\node at (-3,0) [pin={[draw,below,yshift=-1cm]\inlay\stablefp}] {};
\node at (3,0) [pin={[draw,below,yshift=-1cm]\inlay\unstablefp}] {};
\node at (-1.8,3.7) {\inlay\spiralsink};
\node at ( 1.8,3.7) {\inlay\spiralsource};
\node at (-3.5,{0.25*3.5*3.5})
[pin={[draw,left,xshift=-1.15cm,yshift=-0.3cm]\inlay\degensink}] {};
\node at ( 3.5,{0.25*3.5*3.5})
[pin={[draw,right,xshift=0.9cm,yshift=-0.3cm]\inlay\degensource}] {};
\end{tikzpicture}
\end{document}
答案2
在发布最终获胜答案之前,gernot 已经发布了多个答案,每个答案都代表最终图片的一个图形组件。发布最终答案后,他删除了组件答案。
为了回答这个问题,我从 gernot 的 [现已删除] 组件和 OP 的问题中提取了这些部分,以证明一旦拥有所有组件,就可以用\stackinset
它们叠加在基础图上。
他的部件包括tikz
以下 MWE 中标识的部分\spiralA
,即\spiralB
、、、、、和 、\degensink
\degensource
\nondegensink
\nondegensource
\documentclass[10pt]{article}
\usepackage{pgf,tikz}
\usetikzlibrary{arrows}
\usepackage{mathrsfs}
\usepackage{amssymb,fancyhdr,txfonts,pxfonts}
\pagestyle{empty}
\usetikzlibrary{decorations.markings}
\usepackage{stackengine}
\renewcommand\stacktype{L}
\setstackgap{L}{8pt}
\begin{document}
\savestack\mygraph{%
\begin{tikzpicture}[%
line cap=round,
line join=round,
>=triangle 45,
x=1.0cm,
y=1.0cm%
]
%
\clip(-5.8,-3.58) rectangle (5.56,5.64);
\draw [line width=1.2pt] (0.,4.68)-- (0.,-0.74);
\draw [line width=1.2pt] (-4.,0.)-- (4.3,0.);
\draw [thick, domain=-2:2] plot (\x, {\x*\x});
\draw (3.62,-0.12) node[anchor=north west] {$\mathrm{Tr}\,A$};
\draw (-.4,5.1) node[anchor=north west] {$\scriptstyle\det A$};
\draw (-2.35,4.7) node[anchor=north west] {%
\stackunder{$\scriptstyle\Delta=0$}{$\downarrow$}};
\draw (1.08,5.1) node[anchor=north west] {\ensurestackMath{\stackunder[11pt]{%
\Longstack[l]{\scriptstyle\Delta=0: \scriptstyle\det A=\frac{1}{4}(%
\mathrm{Tr}A)^2}}{\downarrow}}};
\draw (1.,-1.)-- (-1.,-3.);
\draw (-1.,-1.)-- (1.,-3.);
\draw [dash pattern=on 2pt off 2pt] (-1.,-2.)-- (1.,-2.);
\draw [dash pattern=on 2pt off 2pt] (0.,-1.)-- (0.,-3.);
\end{tikzpicture}%
}
\savestack\spiralA{%
\begin{tikzpicture}
[decoration=
{markings,
mark=at position 0.1 with {\arrow{stealth}}
}
,scale=0.5
]
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\draw[postaction={decorate},domain=27:7,variable=\t,smooth,samples=100]
plot ({\t r}: {0.005*\t*\t});
\end{tikzpicture}%
}
\savestack\spiralB{%
\begin{tikzpicture}
[decoration=
{markings,
mark=at position 0.99 with {\arrow{stealth}}
}
,scale=0.5
]
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\draw[postaction={decorate},domain=10:28.5,variable=\t,smooth,samples=100]
plot ({-\t r}: {0.005*\t*\t});
\end{tikzpicture}
}
\savestack\degensink{%
\begin{tikzpicture}
[decoration=
{markings,
mark=at position 0.5 with {\arrow{stealth}}
}
,scale=0.5
]
\draw (0,-4) -- (0,4);
\draw[postaction={decorate}] (-4,0) -- (0,0);
\draw[postaction={decorate}] (4,0) -- (0,0);
\draw[postaction={decorate}] (-3.5,3.5) .. controls (4,1.5) and (4,1).. (0,0);
\draw[postaction={decorate}] (3.5,-3.5) .. controls (-4,-1.5) and (-4,-1) .. (0,0);
\draw[postaction={decorate}] (-3.5,2.5) .. controls (2,1) and (2,0.8).. (0,0);
\draw[postaction={decorate}] (3.5,-2.5) .. controls (-2,-1) and (-2,-0.8) .. (0,0);
\end{tikzpicture}%
}
\savestack\degensource{%
\begin{tikzpicture}
[decoration=
{markings,
mark=at position 0.5 with {\arrow{stealth}}
}
,scale=0.5
]
\draw (0,-4) -- (0,4);
\draw[postaction={decorate}] (0,0) -- (-4,0);
\draw[postaction={decorate}] (0,0) -- (4,0);
\draw[postaction={decorate}] (0,0) .. controls (4,1.5) and (4,1).. (-3.5,3.5);
\draw[postaction={decorate}] (0,0) .. controls (-4,-1.5) and (-4,-1) .. (3.5,-3.5);
\draw[postaction={decorate}] (0,0) .. controls (2,1) and (2,0.8).. (-3.5,2.5);
\draw[postaction={decorate}] (0,0) .. controls (-2,-1) and (-2,-0.8) .. (3.5,-2.5);
\end{tikzpicture}%
}
\savestack\nondegensink{%
\begin{tikzpicture}
[decoration=
{markings,
mark=at position 0.5 with {\arrow{stealth}}
}
,scale=0.5
,plotsettings/.style={postaction={decorate}}
]
\draw[postaction={decorate}] (0,-4) -- (0,0);
\draw[postaction={decorate}] (0,4) -- (0,0);
\draw[postaction={decorate}] (-4,0) -- (0,0);
\draw[postaction={decorate}] (4,0) -- (0,0);
\draw [plotsettings,domain=-2:0] plot (\x, {\x*\x});
\draw [plotsettings,domain= 0:2] plot (\x, {\x*\x});
\draw [plotsettings,domain=-2:0] plot (\x, {-\x*\x});
\draw [plotsettings,domain= 0:2] plot (\x, {-\x*\x});
\draw [plotsettings,domain=-3:0] plot (\x, {0.44*\x*\x});
\draw [plotsettings,domain= 0:3] plot (\x, {0.44*\x*\x});
\draw [plotsettings,domain=-3:0] plot (\x, {-0.44*\x*\x});
\draw [plotsettings,domain= 0:3] plot (\x, {-0.44*\x*\x});
\end{tikzpicture}%
}
\savestack\nondegensource{%
\begin{tikzpicture}
[decoration=
{markings,
mark=at position 0.5 with {\arrow{stealth}}
}
,scale=0.5
,plotsettings/.style={postaction={decorate}}
]
\draw[postaction={decorate}] (0,0) -- (-4,0);
\draw[postaction={decorate}] (0,0) -- (4,0);
\draw[postaction={decorate}] (0,0) -- (0,-4);
\draw[postaction={decorate}] (0,0) -- (0,4);
\draw [plotsettings,domain=0:-2] plot (\x, {\x*\x});
\draw [plotsettings,domain=2: 0] plot (\x, {\x*\x});
\draw [plotsettings,domain=0:-2] plot (\x, {-\x*\x});
\draw [plotsettings,domain=2: 0] plot (\x, {-\x*\x});
\draw [plotsettings,domain=0:-3] plot (\x, {0.44*\x*\x});
\draw [plotsettings,domain=3: 0] plot (\x, {0.44*\x*\x});
\draw [plotsettings,domain=0:-3] plot (\x, {-0.44*\x*\x});
\draw [plotsettings,domain=3: 0] plot (\x, {-0.44*\x*\x});
\end{tikzpicture}%
}
\stackinset{c}{-55pt}{c}{2pt}{\stackunder[24pt]{$\vcenter{\hbox{\scalebox{.3}{%
\nondegensink}}}$}{\scriptsize\Longunderstack[l]{sink}}%
}{%
\stackinset{c}{60pt}{c}{2pt}{\stackunder[24pt]{$\vcenter{\hbox{\scalebox{.3}{%
\nondegensource}}}$}{\scriptsize\Longunderstack[l]{source}}%
}{%
\stackinset{c}{-71pt}{c}{56pt}{\stackunder[24pt]{$\vcenter{\hbox{\scalebox{.3}{%
\fbox{\degensink}}}}$}{\scriptsize\Longunderstack[l]{degenerate sink}}%
$\!\rightarrow$}{%
\stackinset{c}{78pt}{c}{56pt}{$\leftarrow\!$%
\stackunder[24pt]{$\vcenter{\hbox{\scalebox{.3}{%
\fbox{\degensink}}}}$}{\scriptsize\Longunderstack[r]{degenerate source}}%
}{%
\stackinset{c}{-20pt}{c}{62pt}{\stackunder{\scalebox{.35}{\spiralA}}{%
\scriptsize spiral sink}}{%
\stackinset{c}{27pt}{c}{62pt}{\stackunder{\scalebox{.35}{\spiralB}}{%
\scriptsize spiral source}}{%
\mygraph%
}}}}}}
\end{document}