评估用户定义的数学函数

评估用户定义的数学函数

我想“绘制”一个简单的线函数,例如f(x) = 3x+5。实际上,这是完美的工作:

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
    \begin{axis}
        \plot{3*x+5};
    \end{axis}
\end{tikzpicture}
\end{document}

但是,对于线函数,我希望能够创建一个自定义命令,该命令将函数作为参数并评估此线上的两个点。像这样:

\NewDocumentCommand\myline{m}{
    \draw (-5;\fx{#1}(-5)>) -- (5; \fx{#1}(7)>);
}
\NewDocumentCommand\fx{m r()}{
% this is where I'm missing what to do:
% #1 is the function: #1 = 3*x+5
% #2 is the value to use: x = #2
}

在哪里

  • <#1(-5)>应解析并评估行函数x=-5
  • <#1(7)>应解析并评估行函数x=7

请注意,我想保留“绘图”样式功能:并且我不想像这样3*x+5添加反斜杠:x3*\x+5

我尝试使用各种pgfmath功能,但一定是缺少了一些东西才能让它工作:(

感谢您的帮助 !

答案1

以下是一个完全可扩展的函数,它允许您仅使用 来评估函数x。警告:x即使您不希望如此,每个 都会被替换为值,因此您不能再使用 函数exp()l3fp。您可以使用可选参数更改替换的变量名称,这样\fx[x_1]{exp(x_1/5)}{2}就可以了。

\documentclass{article}

\usepackage{etl}

\ExplSyntaxOn
\NewExpandableDocumentCommand \fx { O{x} m m }
  {
    \fp_eval:n { \etl_replace_all_deep:nnn {#2} {#1} {#3} }
  }
\ExplSyntaxOff

\begin{document}
\fx{3*x+5}{-5} and \fx{3*x+5}{7}
\end{document}

相关内容