|
2.7.5 数学のダミー変数
数学の理論式を構築する際には,各種の局所化されたオブジェクト,つまり,「ダミー変数」を導入する必要がでる.ダミー変数は,モジュールや他のスコープを限定するための構成体を使うことで作成することができる.
数学のダミー変数の代表的なものに積分変数がある.形式的な積分を記述するとき,慣用の表記法では,特定名を持つある積分変数を導入する必要がある.この変数は,基本的に積分に「局所的」とされる.また,ダミー変数の名前は,任意の名前で構わないが,数式にある他の名前と競合してはならない.
ある積分を評価するための関数を定義する.
In[1]:= p[n_] := Integrate[f[s] s^n, {s, 0, 1}]
この例の sは積分変数と競合してしまう.
In[2]:= p[s + 1]
Out[2]= 
これは,モジュールに対して局所化された積分変数の定義である.
In[3]:= pm[n_] := Module[{s}, Integrate[f[s] s^n, {s, 0, 1}]]
モジュールが使われたので, Mathematicaは,名前を自動的に変更し,競合を防ぐ.
In[4]:= pm[s + 1]
Out[4]= 
多くの場合,ダミー変数は局所なままにしておき,数式の他の変数に干渉しないようにしておきたい.しかし,場合によっては,同じダミー変数を違った用途で使うときに,用途間で競合しないようにすることがより重要になる.
ベクトルやテンソルの積を構築する式では,ダミー変数を繰り返し使う必要がでてくる.「和の規約」に習うと,ちょうど2回現れるベクトルやテンソルの添数には,その添数の取り得る限りの値の中で総和が取られる.繰り返し使われる添数の実際の名前は何でも構わないが,もしも,繰り返し使われる添数が2つあるならば,競合しないような名前にしておく必要がある.
繰り返し使われる添数 jをダミー変数として設ける.
In[5]:= q[i_] := Module[{j}, a[i, j] b[j]]
モジュールは,ダミー変数の各インスタンスに対して別の名前を与える.
In[6]:= q[i1] q[i2]
Out[6]= 
数学のいろいろな場面で,固有名を持つ変数を使う必要がでてくる.例えば,方程式の解を表すときがそうである. のような方程式には, の形の解は無限に存在する.ここで, はダ ミー変数であり,値は整数であれば何でもよい.この方程式を繰り返し2回解いたとしても, の値が同じになるという保証はない.このため,オブジェクトnは毎回異なるという前提を踏まえて解を設定するようにしなければならない.
sinsolに対する値を定義する. nをダミー変数とする.
In[7]:= sinsol := Module[{n}, n Pi]
ダミー変数の名前は同じでも,モジュールが評価されるごとに区別される.
In[8]:= sinsol - sinsol
Out[8]= 
固有のオブジェクトが必要となるもう1つの場面は「積分定数」を表すときである.積分を行うということは,実効的に導関数に関して方程式を解くことに相当する.一般に,方程式にはいくつもの可能な解が存在し,各解は加法的な「積分定数」により他の解と異なる.標準的な Mathematicaの積分関数 Integrateは,常に,積分定数を付加しないで解を返すようになっている.しかし,ユーザ自身で,積分定数を導入すれば,モジュールを使い各定数を固有化しておく必要がある.
|