関数の定義
「ユーザ定義の関数」において,ユーザ定義の関数をどう作成するか説明した.関数
の定義は,
のように普通記述する.(「ユーザ定義の関数」での定義では,演算子
ではなく,演算子
を使った.
と
の演算子のどちらを使ったらよいかは,「即時的な定義と遅延的な定義」を参照すること.)
定義
は,Mathematica に対して,パターン
にマッチする式が現れるたびに,それを
に置換するよう指示する.パターン
は,f[anything]という形式を持つすべての式にマッチするので,この定義は任意の「引数」を持った関数
すべてに適用される.
のような関数定義は,「添数付きオブジェクトの定義」で触れた添数付き変数に関する
のような定義と比較することができる.
は,特定の式
が現れるたびに,それを
に置換するよう指示はするが,他の「添数」を持った
が現れても(例えば,
)全く関知しない.
「関数」を定義するには,f[x]形の式に対して値を指定する必要がある.x は何でもよい.これは,どんな式でも表すパターンオブジェクト
を持つパターン
に対して定義を与えることで行うことができる.
や
に関する定義を作成するということは,名前を
とした「配列」の要素に値を与える,ということに相当する.一方,
に関して定義を作ることは,任意の「添数」を持った「配列要素」の集合に対して値を与える,ということに相当する.実際,どのような関数でも,添数を任意の変数とした配列としてとらえることもできる.
数学では,
は1つの「写像(マップ)」としてとらえることができる.つまり,
と
に対する値の定義とは,定義域の離散点に対応した写像による像を指定することになる.
に対して値を定義することは,点の連続体における
の像を指定することになる.
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
| In[4]:= |
| Out[4]= |
| In[5]:= |
変換規則は,その適用先が式であってもパターンであっても定義することができる.また,
や
のような特定の式に対する定義と,
等のパターンに対する定義を一緒に混ぜて使うこともできる.
Mathematica では,数学関数の多くは,特殊定義と一般定義を組み合せて使うことで構築することができる.例えば,階乗関数を考える.この関数は,すでに Mathematica に組み込まれているが(n!と書く),Mathematica の定義を使うことでユーザ自身でも構築することができる.
階乗関数に関する標準的な数学定義は,
とすることで,ほとんど直接的に Mathematica に入力することができる.この定義は,n が1以外の値のとき,f[n]は
で置換され,さらに,n が
,のとき,
は単に
で置換されるものとする.
| In[6]:= |
| Out[6]= |
| In[7]:= |
| In[8]:= |
| Out[8]= |
| In[9]:= |
| Out[9]= |
