
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
aber stattdessen bekomme ich das
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 = rad
und 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 = rad
aber 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}
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}