我正在尝试在 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 解决方案。
- 它适用于定点运算,而不仅仅是整数,并且
- 通过使用正确的 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) ) }}
将计算\MyMathFunction
2 的平方根。