我怎样才能绘制在 xy 平面上绘制渐变的图表

我怎样才能绘制在 xy 平面上绘制渐变的图表

在此处输入图片描述

我如何使用 tikz 绘制此图片以便在 xy 平面上绘制渐变。或者也许是动画,以便渐变的概念变得清晰或易于理解。

答案1

这是一个使用TikZ和 的解决方案pgfplots。在所示行上插入函数,并按所示插入关于 x 和 y 的导数。

根据功能,您可能需要调整箭头长度,这可以通过调整quiver/scale arrows=0.1其他内容来实现(例如使其变0.1小或变大)。您还可以调整指示的域的大小。

\documentclass{standalone}

\usepackage{tikz,pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    domain=-1:1,
    xmax=1,
    ymax=1,
]
\addplot3[blue,/pgfplots/quiver,
    quiver/u=2*x, % derivative w.r.t. x
    quiver/v=2*y, % derivative w.r.t. y
    quiver/w=0,
    quiver/scale arrows=0.1,
    -stealth,samples=10] {-2};
\addplot3[mesh,draw=blue] {x^2+y^2}; % function
\end{axis}
\end{tikzpicture}
\end{document}

z 等于 x 平方加 y 平方的图

有关可以做什么的更多想法,这里有大量的使用示例pgfplothttp://pgfplots.sourceforge.net/gallery.html

答案2

我同意 rbrignall 的观点,这里可以使用箭头图。不过,我还想补充几点

  1. 如果您有一个缓慢变化的函数,您可以让 pgfplots 计算导数。
  2. 由于函数变化缓慢,因此您需要对箭头进行相当大的缩放。
  3. 指示 对您有好处compat=1.16。旧的兼容模式与最新的兼容模式有很大不同。
  4. 你需要3d box=complete有一个完整的盒子。

结果(使用类似于您的屏幕截图的功能):

\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16,width=12cm}
\begin{document}
\begin{tikzpicture}
\begin{axis}[declare function={f(\x,\y)=0.5-pow(cos(\x)*cos(\y),2)-pow(cos(\x),2)-pow(cos(\y),2)
  -0.5*pow(sin(\x)*sin(\y),2);},
  zmin=-4.001,zmax=0.001,
  domain=-90:90,ytick={-90,0,90},xtick={-90,0,90},
  view={145}{30},3d box=complete]
\addplot3[color=blue,quiver={
    u={(f(x+1,y)-f(x-1,y))},
    v={(f(x,y+1)-f(x,y-1))}, 
    w value=0,
    scale arrows=180},
    every arrow/.append style={line width=0.2pt},
    %quiver/scale arrows=0.1,
    -stealth,samples=15] {-4};
\addplot3[mesh,draw=blue] {f(x,y)}; % function
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容