Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica >
How to | 変数と関数の定義を作成する方法
Mathematica では,任意の変換のための規則として,非常に一般的な関数の概念を持っている.変数に対する値も同様の形で割り当てられる.変数に値を設定すると,その変数はその値に対する記号となる.
以下は簡単な変換規則である.「があるといつもそれを3で置き換える」という規則である.
In[31]:=
Click for copyable input
Out[31]=
変数は値3を持つ.
式を評価するときにはいつもは3で置き換えられる:
In[32]:=
Click for copyable input
Out[32]=
この規則は,新しい規則を定義することによって削除することができる:
In[33]:=
Click for copyable input
Out[33]=
新しい規則は,「があると必ずそれをで置き換える」というものである.これまでのところに関連する規則はないので,その値はそのままである.
に値を割り当てる:
In[34]:=
Click for copyable input
Out[34]=
を評価すると,についての規則によってに置き換えられ,についての規則によっては4で置き換えられるため,結果は,つまり16となる:
In[35]:=
Click for copyable input
Out[35]=
の値を変えるとの値も変わる:
In[36]:=
Click for copyable input
Out[36]=
In[37]:=
Click for copyable input
Out[37]=
今度は以下のようにに値を割り当てる:
In[38]:=
Click for copyable input
Out[38]=
は既に値3を割り当てられているため,ここで定義される規則は 「を9で置き換える」であって,「で置き換える」ではない.つまりに依存しない:
In[39]:=
Click for copyable input
Out[39]=
In[40]:=
Click for copyable input
Out[40]=
このことが起るのは, (Set)を使って規則が定義される場合,規則が定義される前に右辺が評価されるからである.
規則は,以下のように (SetDelayed)を使って定義することもできる:
In[41]:=
Click for copyable input
規則がを使って定義される場合には,規則が定義される前に右辺が評価されるということはない.したがってが既に値を持つ場合でも,この規則では「があると必ずそれをで置き換える」と言っていることになる.このため,に依存している:
In[42]:=
Click for copyable input
Out[42]=
In[43]:=
Click for copyable input
Out[43]=
In[44]:=
Click for copyable input
Out[44]=
Mathematica の関数は,パターンに作用する規則によって定義されている.以下は簡単な例である:
In[45]:=
Click for copyable input
は,が任意の式(これは名前で右辺に表示されるものである)を表すパターンである.これは「任意の式のがある場合は,それをその式を平方したもので置き換える」という規則である:
In[46]:=
Click for copyable input
Out[46]=
In[58]:=
Click for copyable input
Out[58]=
以下は2つの引数を持つ関数である:
In[48]:=
Click for copyable input
In[49]:=
Click for copyable input
Out[49]=
関数を定義する場合は必ずを使わなくてはならない.さもなければ,右辺の変数は規則が定義される前に評価されるので,これらの変数が左辺の関連する式を表さないことがある:
In[50]:=
Click for copyable input
Out[50]=
が9でが3であるため,それが起った.この規則では「パターンにマッチするものは何でも90で置き換える」と言っている:
In[59]:=
Click for copyable input
Out[59]=
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team
フォーマット:   HTML  |  CDF