自己的數學函數 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)})$or $\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}

相關內容