삼각 함수를 사용하여 벡터장 플로팅

삼각 함수를 사용하여 벡터장 플로팅

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}

수정된 화살표가 있는 떨림 플롯

관련 정보