|
1.7.4 関数の変換規則
書式x -> valueの変換規則を使った記号への値の置換えを1.4.2で説明した.Mathematicaの変換規則は,記号だけに対応したものではなくもっと一般的なものである.実際,どのようなMathematicaの式でも,それに対応した変換規則を設けることが可能である.
x -> 3の変換規則を適用し,式中のxを3におく.
In[1]:= 1 + f[x] + f[y] /. x -> 3
Out[1]= 
変換規則をf[x]に対して使うこともできる.この規則はf[y]には作用しない.
In[2]:= 1 + f[x] + f[y] /. f[x] -> p
Out[2]= 
f[t_]はパターンを表し,fが実際に取る引数は何でもよい.
In[3]:= 1 + f[x] + f[y] /. f[t_] -> t^2
Out[3]= 
変換規則の最も強力な面は,文字どおりの変数や関数だけでなく,パターンに基づいたものであってもよいことである.ここで,パターンとは,例えば,ブランク(_)を含むf[t_]のような式を指す.ブランクはどんな式でも代替することができる.つまり,f[t_]に対する変換規則は,関数fがどんな引数を取っても有効であるfの変換の仕方を指定する.これに対して,f[x]に対応したブランクなしの変換規則は,記述どおりの式f[x]しか変換することができない.f[y]の変換に関しては何の効果ももたない.
また,f[t_] := t^2のような関数定義を与えるときは,f[t_] := t^2の変換規則を必要な際に適用するようにMathematicaに命令しているに過ぎない.
どんな形の式にも変換規則を設定することができる.
In[4]:= f[a b] + f[c d] /. f[x_ y_] -> f[x] + f[y]
Out[4]= 
x^p_に関する変換規則を適用する.
In[5]:= 1 + x^2 + x^4 /. x^p_ -> f[p]
Out[5]= 
任意な式へのパターンおよび変換規則の設定は,2.3と2.5で詳しく説明する.ここでは,Mathematicaにおいてすべての式は特定のシンボル的な構造をもっており,また,そのため,変換規則を使うことで式の構造のどの部分でも変換することができる,というだけにとどめる.
|