评论

评论

我正在尝试在 LaTeX 中创建一个可用的函数,以便其输入进行数学转换。但是,我找不到任何可以执行此类数学函数定义的文档。

以下是我所寻求的一个例子:

\myMathFunction定义了一个仅接受一个参数的函数,其用法如下:

\myMathFunction{2}

如果函数定义如下,则应该输出 6:({#1} * 5) - {#1}^2

其中{#1}参数是,并且就我的例子而言,等于2

此外,该函数应该可以在 PSTricks 图中使用。例如

\psplot[
    algebraic,
    linecolor   = red,
    linewidth   = 1pt
]{0}{TwoPi}
{\myMathFunction{x}}

答案1

计算表和绘制的曲线:

\documentclass{article}
\usepackage{pst-plot}
\usepackage{xparse}
\ExplSyntaxOn%% allow _ : as a letter
\newcommand\myMathFunction[1]{% 
  \ifx#1x ((#1) * 5) - (#1)^2  
  \else \fp_to_decimal:n {((#1) * 5) - (#1)^2} \fi}
\ExplSyntaxOff
\begin{document}
\begin{tabular}{ r r }
$x$ & $f(x)$ \\\hline
0 & \myMathFunction{0}\\
1 & \myMathFunction{1}\\
2 & \myMathFunction{2}\\
3.3 & \myMathFunction{3.3}\\
4 & \myMathFunction{4}\\
5 & \myMathFunction{5}\\\hline
\end{tabular}
%
\pspicture[shift=*](-1,0)(6,7)
\psaxes{->}(5.5,6)
\psplot[algebraic,linecolor=red,linewidth=1.5pt]{0}{5}{\myMathFunction{x}}
\endpspicture
\end{document}

在此处输入图片描述

答案2

评论

我使用了强大的 LaTeX3 功能集l3fp,它由 自动加载xparse

执行

\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\myMathFunction}{m}
    { \fp_to_decimal:n {((#1) * 5) - (#1)^2} }
\ExplSyntaxOff
\begin{document}
\myMathFunction{2}
\end{document}

答案3

这是一个 TikZ/PGF 解决方案。

我不知道它与l3fp方法但它肯定比低级TeX 方法因为

  • 它适用于定点运算,而不仅仅是整数,并且
  • 通过使用正确的 PGFkeys,您可以轻松自定义结果的打印方式(尾随零、科学计数法等)。请参阅第 66 节:数字打印PFG 手册了解更多详细信息。

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\begin{document}

% definiton
\newcommand\myMathFunction[1]%
{%
    \pgfmathparse{5*#1-(#1)^2}%
    \pgfmathprintnumber[fixed,precision=3]{\pgfmathresult}%
}

% macro calls
\myMathFunction{2} \quad
\myMathFunction{45} \quad
\myMathFunction{-56}

\end{document}

答案4

这是一个使用的解决方案LuaLaTeX。MWE 提供了一个名为的 LaTeX 端宏,\MyMathFunction它与一个名为的 Lua 端函数交互mymathfunction;后者执行实际计算。

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{amsmath}    % for '\ensuremath' macro
\usepackage{luacode}    % for 'luacode' environment

% Lua-side code
\begin{luacode}
   function mymathfunction( x )
      return 5*x - x^2  -- specify the function you need
   end
\end{luacode}

%TeX-side macro that invokes the Lua function
\newcommand{\MyMathFunction}[1]{%
    \ensuremath{\directlua{tex.sprint( mymathfunction ( #1 ) )}}}

\begin{document}
The value of my math function evaluated at 2 is \MyMathFunction{2}.

\newcommand\myval{6}  % macro that contains parameter value
The value of my math function evaluated at \myval\ is \MyMathFunction{\myval}.

\end{document}

请注意, 的值\myval本身可以是 Lua 中计算的结果。例如,您可以执行

\newcommand\myval{ \directlua{ tex.sprint( math.exp(1) ) } }

设置\myval为等于自然对数的底数。并且,可以将 Lua 中完成的计算结果直接传递给\MyMathFunction,即无需设置宏\myval来包含计算结果。例如,

\MyMathFunction{ \directlua{ tex.sprint( math.sqrt(2) ) }}

将计算\MyMathFunction2 的平方根。

相关内容