How to | 変数と関数の定義を作成する方法

Wolfram言語では,任意の変換のための規則として,非常に一般的な関数の概念を持っている.変数に対する値も同様の形で割り当てられる.変数に値を設定すると,その変数はその値に対する記号となる.

以下は簡単な変換規則である.「xがあるといつもそれを3で置き換える」という規則である.

In[1]:=
Click for copyable input
Out[1]=

変数xは値3を持つ.

式を評価するときにはいつもxは3で置き換えられる:

In[2]:=
Click for copyable input
Out[2]=

この規則は,新しい規則を定義することによって削除することができる:

In[3]:=
Click for copyable input
Out[3]=

新しい規則は,「xがあると必ずそれをy^2で置き換える」というものである.これまでのところyに関連する規則はないので,その値はそのままである.

yに値を割り当てる:

In[4]:=
Click for copyable input
Out[4]=

xを評価すると,xについての規則によってxy^2に置き換えられ,yについての規則によってyは4で置き換えられるため,結果は4^2,つまり16となる:

In[5]:=
Click for copyable input
Out[5]=

yの値を変えるとxの値も変わる:

In[6]:=
Click for copyable input
Out[6]=
In[7]:=
Click for copyable input
Out[7]=

今度は以下のようにzに値を割り当てる:

In[8]:=
Click for copyable input
Out[8]=

yは既に値3を割り当てられているため,ここで定義される規則は 「zを9で置き換える」であって,「zy^2で置き換える」ではない.つまりzyに依存しない:

In[9]:=
Click for copyable input
Out[9]=
In[10]:=
Click for copyable input
Out[10]=

このことが起るのは,= (Set)を使って規則が定義される場合,規則が定義される前に右辺が評価されるからである.

規則は,以下のように:= (SetDelayed)を使って定義することもできる:

In[11]:=
Click for copyable input

規則が:=を使って定義される場合には,規則が定義される前に右辺が評価されるということはない.したがってyが既に値を持つ場合でも,この規則では「zがあると必ずそれをy^2で置き換える」と言っていることになる.このため,zyに依存している:

In[12]:=
Click for copyable input
Out[12]=
In[13]:=
Click for copyable input
Out[13]=
In[14]:=
Click for copyable input
Out[14]=

Wolfram言語の関数は,パターンに作用する規則によって定義されている.以下は簡単な例である:

In[15]:=
Click for copyable input

f[x_]は,x_が任意の式(これは名前xで右辺に表示されるものである)を表すパターンである.これは「任意の式のfがある場合は,それをその式を平方したもので置き換える」という規則である:

In[16]:=
Click for copyable input
Out[16]=
In[17]:=
Click for copyable input
Out[17]=

以下は2つの引数を持つ関数である:

In[18]:=
Click for copyable input
In[19]:=
Click for copyable input
Out[19]=

関数を定義する場合は必ず:=を使わなくてはならない.さもなければ,右辺の変数は規則が定義される前に評価されるので,これらの変数が左辺の関連する式を表さないことがある:

In[20]:=
Click for copyable input
Out[20]=

xが9でyが3であるため,それが起った.この規則では「パターンh[x_,y_]にマッチするものは何でも90で置き換える」と言っている:

In[21]:=
Click for copyable input
Out[21]=
Translate this page: