How to | 変数と関数の定義を作成する方法
Mathematica では,任意の変換のための規則として,非常に一般的な関数の概念を持っている.変数に対する値も同様の形で割り当てられる.変数に値を設定すると,その変数はその値に対する記号となる.
以下は簡単な変換規則である.「
があるといつもそれを3で置き換える」という規則である.
| In[31]:= |
| Out[31]= |
| In[32]:= |
| Out[32]= |
この規則は,新しい規則を定義することによって削除することができる:
| In[33]:= |
| Out[33]= |
新しい規則は,「
があると必ずそれを
で置き換える」というものである.これまでのところ
に関連する規則はないので,その値はそのままである.
| In[34]:= |
| Out[34]= |
を評価すると,
についての規則によって
は
に置き換えられ,
についての規則によって
は4で置き換えられるため,結果は
,つまり16となる:
| In[35]:= |
| Out[35]= |
| In[36]:= |
| Out[36]= |
| In[37]:= |
| Out[37]= |
| In[38]:= |
| Out[38]= |
は既に値3を割り当てられているため,ここで定義される規則は 「
を9で置き換える」であって,「
を
で置き換える」ではない.つまり
は
に依存しない:
| In[39]:= |
| Out[39]= |
| In[40]:= |
| Out[40]= |
このことが起るのは,
(Set)を使って規則が定義される場合,規則が定義される前に右辺が評価されるからである.
規則は,以下のように
(SetDelayed)を使って定義することもできる:
| In[41]:= |
規則が
を使って定義される場合には,規則が定義される前に右辺が評価されるということはない.したがって
が既に値を持つ場合でも,この規則では「
があると必ずそれを
で置き換える」と言っていることになる.このため,
は
に依存している:
| In[42]:= |
| Out[42]= |
| In[43]:= |
| Out[43]= |
| In[44]:= |
| Out[44]= |
Mathematica の関数は,パターンに作用する規則によって定義されている.以下は簡単な例である:
| In[45]:= |
は,
が任意の式(これは名前
で右辺に表示されるものである)を表すパターンである.これは「任意の式の
がある場合は,それをその式を平方したもので置き換える」という規則である:
| In[46]:= |
| Out[46]= |
| In[58]:= |
| Out[58]= |
| In[48]:= |
| In[49]:= |
| Out[49]= |
関数を定義する場合は必ず
を使わなくてはならない.さもなければ,右辺の変数は規則が定義される前に評価されるので,これらの変数が左辺の関連する式を表さないことがある:
| In[50]:= |
| Out[50]= |
が9で
が3であるため,それが起った.この規則では「パターン
にマッチするものは何でも90で置き換える」と言っている:
| In[59]:= |
| Out[59]= |
