![pgfplot/tikzpicture 声明函数错误与 sqrt():缺失数字被视为零](https://linux22.com/image/422086/pgfplot%2Ftikzpicture%20%E5%A3%B0%E6%98%8E%E5%87%BD%E6%95%B0%E9%94%99%E8%AF%AF%E4%B8%8E%20sqrt()%EF%BC%9A%E7%BC%BA%E5%A4%B1%E6%95%B0%E5%AD%97%E8%A2%AB%E8%A7%86%E4%B8%BA%E9%9B%B6.png)
我正在调整解决方案这里绘制微分方程的斜率场。我想使用的方程是 dy/dt = -sqrt(1-y^2)。我可以让它适用于“简单”函数(参见 MWE),但不能适用于我想要的这个函数。您可以在 MWE 中看到我尝试过的各种函数(注释掉)。对于那些失败的情况,我看到
! Missing number, treated as zero.
<to be read again>
n
l.42 \end{axis}
我猜测答案在这里关于花括号是相关的,但我还没有设法让它解决我的问题。
梅威瑟:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\pgfplotsset{
SlopeFieldAxis/.style={
axis equal image,
view={0}{90},
samples=11,
}
}
\begin{document}
\begin{tikzpicture}[
declare function={
f1(\x,\y) = 1.0 - \y*\y;
f2(\x,\y) = sqrt(\y);
f3(\x,\y) = -sqrt(f1(\x,\y));
f4(\x,\y) = -sqrt(1.0 - \y*\y);
}
]
\begin{axis}[
SlopeFieldAxis,
width=0.95\textwidth,
xmin=0, xmax=3.14159,
ymin=0, ymax=2.0,
zmin=0, zmax=1.0,
domain=0:3.14159, y domain=0:2,
]
\addplot3[
blue,
quiver={
u={1},
% v={f1(x,y)}, % works
% v={f2(x,y)}, % works
v={f3(x,y)}, % error
% v={f4(x,y)}, % error
scale arrows=0.075,
every arrow/.append style={-latex},
}
] (x,y,0);
\end{axis}
\end{tikzpicture}
\end{document}