Plotten eines Vektorfelds mit trigonometrischer Funktion

Plotten eines Vektorfelds mit trigonometrischer Funktion

Ich versuche, das Vektorfeld $F(x,y) = \cos (x+y) \vec{i} + x \vec{j}$ mit Tikz zu zeichnen. Ich habe ein anderes Thema zum Zeichnen von Vektorfeldern verfolgt, das ich hier gesehen habe, und habe damit auch andere Vektorfelder gezeichnet, und es lief ziemlich gut, aber dieses hier macht mich verrückt. Das Ziel ist dies

Bildbeschreibung hier eingeben

aber stattdessen bekomme ich das

Bildbeschreibung hier eingeben

mit diesem Code

\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}

Ich habe nicht einmal versucht, die Linien zu zeichnen, die die x- und y-Achse darstellen. Zuerst habe ich es nicht verwendet trig format = radund es war nicht ganz richtig. Dann habe ich versucht, die x- und y-Domäne zu ändern, aber das hat es nur noch schlimmer gemacht. Dann habe ich versucht, es zu verwenden, trig format = radaber dann habe ich diese zufällige Linie dort bekommen und das Vektorfeld ist nicht einmal das, was ich wollte. Kann mir bitte jemand helfen? Vielen Dank im Voraus!

Antwort1

Um den Pfeil in die Mitte der Gitterkoordinaten zu bringen, (x,y)wird die halbe Pfeillänge abgezogen.

\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}

Köcherplot im Rahmen

Bearbeiten: Eine korrektere Darstellung wäre, den Pfeilvektor von dieser neuen Position aus zu berechnen, wie unten rot dargestellt

\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}

Köcherplot mit modifizierten Pfeilen

verwandte Informationen