独自の数学関数 f(x)

独自の数学関数 f(x)
  • カスタム関数 f(x) を定義したいと思います。

  • たとえば、関数が に設定されている場合、\f{3} が印刷されるはずです。ln(3) + 3ln(x) + 3

  • 関数を変更できるはずです: \setfunc{sin(\x}}

  • これは、将来の使用にのみ影響するはずです\f{...}

  • そして、最初の 3 つの導関数を定義することも可能になるはずです。

コマンドはこのように実行する必要はありません。よりエレガントで実用的な方法があるかもしれません。警告: 次の環境で動作するはずです: https://tex.stackexchange.com/a/299720/101053

編集: 導関数を微分に変更しました。「微分を定義する」が何を意味するのか不明です。他の関数 (微分かそうでないかに関係なく) を単に追加できると言いたかったのです。

答え1

これが一般的に機能するのであれば、私はただ運が良かっただけです。導関数を実行するように編集しました。

編集済み 数式モードに忠実になるようにしました。 オプションの引数 (デフォルト ) を使用して異なる関数名を使用できるように編集しました。ではなく\fより自然な構文を使用するように編集しました。マクロを提供するように編集しました。 で動作するように編集しました。\f(3)\f{3}\listfuncamsmath

最後に、関数名自体にプライムや下付き文字などを含めることができる、より一般的な構文を許可するように編集しました。

\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}

関連情報