pgfplot/tikzpicture 声明函数错误与 sqrt():缺失数字被视为零

pgfplot/tikzpicture 声明函数错误与 sqrt():缺失数字被视为零

我正在调整解决方案这里绘制微分方程的斜率场。我想使用的方程是 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}   

相关内容