如何将 sagetex 中定义的函数传递给 pgfplots

如何将 sagetex 中定义的函数传递给 pgfplots

有没有办法将 sagtex 中定义的函数传递给 pgfplots 进行绘图?请参见以下示例。

\documentclass{article}
\usepackage{pgfplots}
\usepackage{sagetex}


\begin{document}

\begin{sagesilent}
  f(x) = 2*sin(x^2)
\end{sagesilent}

$f(x) = \sage{f(x)}$

\begin{center}
  \begin{tikzpicture}
    \begin{axis}[no markers, samples=100]
%      \addplot gnuplot {\sageraw{f(x)}};
      %should be the same as
      \addplot gnuplot {2*sin(x^2)};
    \end{axis}
  \end{tikzpicture}
\end{center}

\end{document}

编辑:我也尝试过\pgfmathdeclarefunction{function}{\sagestr{print(f(x))}}\addplot gnuplot {function(x)};但是没有用。

编辑2:我刚刚对 sagetex 提出了一个功能请求:https://github.com/dandrake/sagetex/issues/1我希望这个问题能尽快得到解决

答案1

我没有安装 Sage,但可以尝试一下……

\documentclass{scrartcl}
\usepackage{sagetex}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tkz-fct}
\pagestyle{empty}
\begin{document}
\begin{sagesilent}
x=var('x')
y=var('y')
x_coords = [x for x in srange(0,10)]
y_coords = [2*sin(x*x) for x in srange(0,10)]
output = ""
for i in range(0,len(x_coords)-1):
    output+=r"\draw[red, thick] (%f cm ,%f cm)--(%f cm ,%f cm);"%(x_coords[i],y_coords[i],x_coords[i+1],y_coords[i+1])
\end{sagesilent}
\begin{tikzpicture}[scale=1.25]
\tkzInit[xmin=-5,xmax=5,ymax=2]
\tkzGrid
\tkzAxeXY
\sagestr{output}
\end{tikzpicture}
\end{document}

也许你必须调整使用的示例 http://www.sagemath.org/doc/tutorial/sagetex.html

但我现在无法测试它...

相关内容