为什么箭筒图中的向量标准化不起作用?

为什么箭筒图中的向量标准化不起作用?

我正在使用箭筒图创建一个矢量场,并且我希望所有矢量的长度都是单位。为什么下面的方法不起作用?

\documentclass{article}
\usepackage{pgfplots,}
\pgfplotsset{compat=1.8}

\usepackage{amsmath}

\begin{document}
    \def\length{sqrt(1+(x-y)^2)}
\begin{tikzpicture}
\begin{axis}[
    axis lines=middle,
    view={0}{90},
    domain=-2:2,
    y domain=-2:2,
    xmax=2, ymax=2,
    samples=15
]
\addplot3 [gray, quiver={u={1/(\length)}, v={(x^2+y^2-1)/(\length)}, scale arrows=0.1, every arrow/.append style={-latex}}] (x,y,0);

\end{axis}
\end{tikzpicture}

\end{document} 

在此处输入图片描述

答案1

您确定长度的公式是错误的。您需要使用sqrt(1+(x^2+y^2-1)^2),因为未缩放箭头的 x 和 y 分量分别为1x^2+y^2-1。请注意,在这种情况下您应该设置axis equal image,以确保两个轴具有相同的单位向量长度:

\documentclass{article}
\usepackage{pgfplots,}
\pgfplotsset{compat=1.8}

\usepackage{amsmath}

\begin{document}
    \def\length{sqrt(1+(x^2+y^2-1)^2)}
\begin{tikzpicture}
\begin{axis}[
    axis lines=middle,
    view={0}{90},
    domain=-2:2,
    y domain=-2:2,
    xmax=2, ymax=2,
    samples=15,
    axis equal image
]
\addplot3 [gray, quiver={u={1/\length}, v={(x^2+y^2-1)/\length}, scale arrows=0.2, every arrow/.append style={-latex}}] (x,y,0);

\end{axis}
\end{tikzpicture}

\end{document} 

相关内容