|
2.5.3 定義
置換演算子 /.を使うことで,特定の式に変換規則を適用することができる.それでは,変換規則を必要なときに自動的に適用させるにはどうしたらよいだろう.
これを行うには, Mathematica式やパターンに対して特定値の割当てを行う.各割当ては,特定された形の式が現れるたびに適用される変換規則を指定する.

変換規則の手動的な適用と自動的な適用
特定の式に xに関する変換規則を適用する.
In[1]:= (1 + x)^6 /. x -> 3 - a
Out[1]= 
xに値を割り当てることで,必要なときに自動的に xに関する変換規則を適用するよう Mathematicaに指示する.
In[2]:= x = 3 - a
Out[2]= 
xは自動的に変換される.
In[3]:= (1 + x)^7
Out[3]= 
ModuleやBlock等の構成体の内部にない限り,すべての割当て操作は現行セッションにおいて継続する.故意に取り去られるか,別の値で上書きされるまでは有効なまま残る.
その継続性のため,割当て操作は気を付けて行う.前に定義した変数x等の割当てを忘れてしまい,それを再び使ってしまう,というような誤りがよく見受けられる.
この程度の間違いは次のようにすれば未然に防げる.第1に,なるべく恒久的な割当ては行わない.置換演算子 /.等の,より限定された構成体を使うようにする.第2に,割当てを行ったなら,使う必要がなくなり次第に割当ての取消し演算子 =.,または Clearを使い割当て関係を解除しておく.
もう1つの予防策として,よく使われそうな名前や簡単な名前の付いた変数に割り当てるときは十分に先の事を考えてから行うようにする. xのような名前はシンボルとしてよく使われるだろう. x = 3等の割当てを行ってしまうと, xは現れるたびに 3に置換され,シンボル的なパラメータとしては使えなくなってしまう.
通常,後で別の用途を想定しているような変数には恒久的な値は割り当てない方がよい.例えば,光の速度を定数化する意味で変数 cに 3.*10^8の値を割り当てたとする.後で cを別の用途,例えば,単なる未確定係数として使おうとしてもそれができなくなってしまう.そうしないためには, cの代りに SpeedOfLightというようにできるだけ特定化された名前を使う.

割当て値の削除
思ったような分解式は得られない.これは,すでに上で xに値が割り当てられてしまったからである.
In[4]:= Factor[ x^2 - 1 ]
Out[4]= 
xに割り当てられている値を消去する.
In[5]:= Clear[x]
今度は狙った結果を得ることができる.
In[6]:= Factor[ x^2 - 1 ]
Out[6]= 
|