用三角函數繪製向量場

用三角函數繪製向量場

我正在嘗試使用 tikz 繪製向量場 $F(x,y) = \cos (x+y) \vec{i} + x \vec{j}$ 。我關注了我在這裡看到的另一個關於繪製向量場的主題,用於繪製其他一些向量場,並且進展得很好,但這一個讓我發瘋。目標是這個

在此輸入影像描述

但我得到了這個

在此輸入影像描述

使用此程式碼

\begin{tikzpicture}[trig format = rad]
\begin{axis}[ticks=none,
  view     = {0}{90},
  domain   = -1:1,
  y domain = -1:1,
  samples  = 21,
]

  \addplot3 [cyan, quiver={u={cos (x + y)}, v={x}, scale 
   arrows=0.1},samples=10, -latex] (x,y,0);
\end{axis}
\end{tikzpicture}

我什至沒有嘗試放置代表 $x$ 和 $y$ 軸的線。首先我沒有使用它trig format = rad,而且它不太正確。然後我嘗試更改 $x$ 和 $y$ 域,但這只會讓情況變得更糟。然後我嘗試使用trig format = rad,但後來我得到了這條隨機線,向量場甚至不是我想要的。有人可以幫忙嗎?先致謝!

答案1

為了得到網格座標中心的箭頭,(x,y)減去箭頭長度的一半。

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{arrows.meta}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\clip[rounded corners] (-3.2,-3.2) rectangle (3.2,3.2);
\begin{axis}[
x=1cm, y=1cm, z=0cm,
view={0}{90},
anchor=center,
trig format plots=rad,
xmin=-3, xmax=3,
ymin=-3, ymax=3,
axis lines=center,
domain=-3:3,
y domain=-3:3,
enlargelimits=0.1,
ticks=none,
]
\addplot3[
cyan, thick,
point meta={sqrt((cos(x+y))^2+x^2)},
quiver={
  u={cos(x+y)}, v={x},
  scale arrows=0.2,
  every arrow/.append style={-{Triangle[scale=0.2+0.8*\pgfplotspointmetatransformed/1000]}},
},
samples=10,
] (x-0.1*cos(x+y),y-0.1*x,0);
\end{axis}
\draw[cyan, ultra thick, rounded corners] (-3.2,-3.2) rectangle (3.2,3.2);
\end{tikzpicture}
\end{document}

框架中的箭袋圖

編輯:更正確的繪圖是從這個新位置計算箭頭向量,如下圖紅色所示

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{arrows.meta}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\clip[rounded corners] (-3.2,-3.2) rectangle (3.2,3.2);
\begin{axis}[
x=1cm, y=1cm, z=0cm,
view={0}{90},
anchor=center,
trig format plots=rad,
xmin=-3, xmax=3,
ymin=-3, ymax=3,
axis lines=center,
domain=-3:3,
y domain=-3:3,
enlargelimits=0.1,
ticks=none,
]
\addplot3[
cyan, thick,
point meta={sqrt((cos(x+y))^2+x^2)},
quiver={
  u={cos(x+y)}, v={x},
  scale arrows=0.2,
  every arrow/.append style={-{Triangle[scale=0.2+0.8*\pgfplotspointmetatransformed/1000]}},
},
samples=10,
] (x-0.1*cos(x+y),y-0.1*x,0);
\addplot3[
red, thick,
point meta={sqrt((cos((x-0.1*cos(x+y))+y))^2+(x-0.1*cos(x+y))^2)},
quiver={
  u={cos((x-0.1*cos(x+y))+y)}, v={x-0.1*cos(x+y)},
  scale arrows=0.2,
  every arrow/.append style={-{Triangle[scale=0.2+0.8*\pgfplotspointmetatransformed/1000]}},
},
samples=10,
] (x-0.1*cos(x+y),y-0.1*x,0);\end{axis}
\draw[cyan, ultra thick, rounded corners] (-3.2,-3.2) rectangle (3.2,3.2);
\end{tikzpicture}
\end{document}

帶有修改箭頭的顫動圖

相關內容