有没有办法将 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
但我现在无法测试它...