我定义了一个宏,它以类似 的字符串作为输入sin(x)+3
,一个开始x
和一个结束x
,并使用\addplot
PGFplots 进行绘制。
现在我想评估这个函数是否等于作为参数提供给宏的x
结尾,以找出函数在什么高度结束。x
问题是:如何评估给定sin(x)+3
的x
字符串?
我尝试使用pgfmathparse
但失败了,并且我知道有其他解决方案\x
,但我只想使用字符串sin(x)+3
。
编辑:好的,这是我目前的代码:
\renewcommand\line[2]{\addplot[domain=#1]{#2};}
\newcommand\dotted[2]{\addplot[dotted] plot[] coordinates{(#1)(#2)};\addplot[holdot] coordinates{(#1)};\addplot[holdot] coordinates{(#2)};}
\newcommand\pwpreviousset{0}
\newcommand\pwpreviousx{0}
\newcommand\pwpreviousy{0}
\newcommand\pwstart[1]{\renewcommand\pwpreviousset{0}\renewcommand{\pwpreviousx}{#1}}
\newcommand\pw[4]
{
\ifnum\pwpreviousset=1
\dotted{{\pwpreviousx,\pwpreviousy}}{{\pwpreviousx,#1}}
\fi
\line{\pwpreviousx:#4}{#2}
\renewcommand{\pwpreviousx}{#4}
\renewcommand{\pwpreviousy}{#3}
\renewcommand\pwpreviousset{1}
}
上面的代码运行完美,只是我希望宏的参数 1 和 3pw
能够自动确定。这些参数表示函数的起始和结束 y 值,即参数 2。我像这样使用它们:
\pwstart{0}
\pw{1}{1+x}{4}{3}
\pw{-1}{2-x}{-2}{4}
但我想以编程方式确定开始y
和结束y
。
答案1
为此,您需要定义x
为一个函数,使用
\pgfkeys{/pgf/declare function={x=90;}}
然后你就可以在以下位置使用你的表达式\pgfmathparse
:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\pgfkeys{/pgf/declare function={x=90;}}
\pgfmathparse{sin(x)+3}\pgfmathresult
\end{document}