自身数学函数 f(x)

自身数学函数 f(x)
  • 我想定义一个自定义函数 f(x)。

  • 例如如果函数设置为 则\f{3} 应该打印。ln(3) + 3ln(x) + 3

  • 应该能够改变功能: \setfunc{sin(\x}}

  • 这只会影响\f{...}

  • 并且应该可以定义前三个导数。

命令不必这样。可能有更优雅/实用的方法。警告:它应该在以下环境中工作: https://tex.stackexchange.com/a/299720/101053

编辑:将导数改为导数;“定义导数”的含义不明确。我试图说我可以简单地添加其他函数(无论是导数还是非导数)。

答案1

如果这通常有效,那我就是运气好。编辑以进行衍生。

已编辑,以更真实地反映数学模式。已编辑,以允许使用可选参数(默认\f)使用不同的函数名称。已编辑,以使用更自然的语法\f(3)而不是\f{3}。已编辑,以提供\listfunc宏。已编辑,以与一起工作amsmath

最后,编辑以允许更通用的语法,可以在函数名称本身中包含素数,下标等。

\documentclass{article}
\usepackage{amsmath}% BREAKS ORIGINAL CODE; REQUIRES \protected@edef IN \setfunc
\makeatletter
\newcommand\setfunc[2][f]{\expandafter\protected@edef\csname#1\endcsname(##1){#2}}
\makeatother
\def\func#1(#2){\csname#1\endcsname(#2)}
\def\listfunc#1(#2){#1(#2)=\func#1(#2)}
\newcommand\x{(##1)}
\begin{document}
\setfunc{\sin\x} I can list the function: $\listfunc f(3)$\par
or I can just print out $\f(x+y)$.\par
or with a general input syntax: $\func f(x+y)$\par
\setfunc[g'_y]{\ln\x + 3\x^2} Now we can have $\listfunc g'_y(7)$\par
\medskip
Derivatives:\par
\setfunc[y]{4\x^5 - 2\x^2 +3}
\setfunc[y']{20\x^4 - 4\x}
\setfunc[y'']{80\x^3 - 4}
\setfunc[y''']{240\x^2}
\setfunc[y^{iv}]{480\x}
$\listfunc y(2)$\par
$\listfunc y'(2)$\par
$\listfunc y''(2)$\par
$\listfunc y'''(2)$\par
$\listfunc y^{iv}(2)$\par
\end{document}

在此处输入图片描述

注意:Joel 指出,如果求值本身包含括号中的项(例如),则该方法可能会引起混淆$\f ( \ln(a + 1.5) )$。 解决方法是包含内部参数,例如$\f({\ln(a + 1.5)})$$\listfunc y''({\ln(a + 1.5)})$

答案2

在我看来,这引起的复杂性比它解决的还要多,但是这里有一个想法:

\documentclass{article}

\makeatletter
\newcommand{\setfunc}[4]{%
  \@namedef{f@}##1{#1}%
  \@namedef{f@'}##1{#2}%
  \@namedef{f@''}##1{#3}%
  \@namedef{f@'''}##1{#4}%
}
\def\f#1#{\@nameuse{f@#1}}
\makeatother

\begin{document}

\setfunc{\sin(#1)}{\cos(#1)}{-\sin(#1)}{-\cos(#1)}
$\f{x}$ $\f'{1}$ $\f''{\pi}$ $\f'''{\pi/2}$

\setfunc{\log(#1)+1}{}{}{}
$\f{3}$

\end{document}

在此处输入图片描述

如果你只想要函数而不是导数,那就简单多了:

\newcommand{\setfunc}[1]{\renewcommand\f[1]{#1}}

完整示例:

\documentclass{article}

\newcommand{\f}[1]{} % initialize
\newcommand{\setfunc}[1]{\renewcommand{\f}[1]{#1}}

\begin{document}

\setfunc{\sin(#1)}
$\f{x}+\f{3}$

\setfunc{\log(#1)+1}
$\f{3}$

\end{document}

在此处输入图片描述

不同的实现,您可以设置任何您喜欢的名称(但请注意不要重新定义已经存在的命令)

\documentclass{article}

\newcommand{\setfunc}[2][\f]{\def#1##1{#2}}

\begin{document}

\setfunc{\sin(#1)}
$\f{x}+\f{3}$

\setfunc[\g]{\log(#1)+1}
$\g{3}$

\end{document}

相关内容