シンボルの値
Mathematica に
x+xと式を入力すると
2xの答が返ってくる.
Mathematica では,変数
xは純粋なシンボルとして認識され形式的な扱いを受ける.シンボルとしてあるとき,
xはどのような式でも表すことができる.
しかし,
xのようなシンボルに特定の値を置く必要が出てくる.場合によってはその値は特定の数値であったり,またより多くの場合,それは別の式であったりする.
1+2x等の式を入力し,その中にあるシンボル
xを特定の値に置き換えるには,まず
Mathematica の変換規則を作り,次に,その規則を式に適用すればよい.
xを値
3で置き換えるには,変換規則
x->3を作成する.ここで,
->は2つの文字から構成され,間にスペースは入れないことに注意してほしい.
x->3は「
xが
3になる」規則としてとらえるとよいだろう.
特定の式だけに変換規則を適用するには,「式
/.規則」の書式を使う.
/.は置換を行う演算子で,スラッシュと終止符の間にスペースは入れない.
| Out[1]= |  |
|
xを置換するものは何でもよい.この例では 2-yで置き換えさせる.
| Out[2]= |  |
|
変換規則だけを入力する.普通の代数式と同じように扱われる.
| Out[3]= |  |
|
| Out[4]= |  |
|
| expr/.x->value | 式expr のx を値value で置換する |
| expr/.{x->xval,y->yval} | 複数の置換を行う |
式のシンボルを値と置換
複数の規則をリストにすることで一括で適用することができる.
| Out[5]= |  |
|
置換の演算子
/.は,特定の式に限って変換規則を適用するときに使う.変換規則をどんな式にでも適用可能としたい場合はどうしたらよいだろうか.例えば,入力されるすべての式において,
xを
3に変えたい場合はどうしたらよいだろう.
「変数の定義」で説明したように,これを行うには,
x=3を用いて
xに
3を割り当てればよい.一度
x=3の割当てが行われると,
xは現れるたびに常に
3に置き換えられる.
| Out[6]= |  |
|
| Out[7]= |  |
|
| Out[8]= |  |
|
| Out[9]= |  |
|
シンボルの値は数だけでなくどんな式としても定義することができる.ただし,一度,等号関係を定義したら,値を明確に変更もしくは除去するまでは,定義した値が内部に残るので注意が必要である.除去のし忘れが,ユーザの間違いの最も大きな共通した原因になっている.
| x=value | 常にx に割り当てられる値を定義する |
| x=. | x に対して定義されている値を消去する |
シンボルへの値の割当て
シンボル xには先に割り当てておいた値がそのまま残っている.
| Out[10]= |  |
|
今度は xは何も特定の値を持たない.このため,純粋にシンボル的な変数として使うことができる.
| Out[12]= |  |
|
Mathematica では
xのようなシンボルはいろいろ違った用途に対して使うことができる.事実,
Mathematica の持つ高い汎用性は,このように必要に応じて各種の用途に対応できる,という機能性に負うところが大きい.ただし,間違いを避けるためどんな用途で
xを使っているのか,常に把握しておく必要はある.特に,
xが別の式を表す名前として働くときの用途と,純粋な未知数としての用途は,きちんと区別しておく必要がある.
記号代数的な処理ができない従来のプログラミング言語では,変数を単なるオブジェクトの名前としてしか使うことができない.ここでオブジェクトとは数値を指し,その数値が変数の値として割り当てられる.一方,
Mathematica では,
xは各種変換規則が適用可能な純粋に形式的な変数として扱われる.もちろん,一度,
x=3のような割当て関係を定義したなら,
xは常に
3に置き換えられることになり,形式的な変数としては働かなくなってしまう.
x=3のような明確な割当て定義を行うと,それは大域的な効果を持つ.一方,
expr/.x->3のような置換は,特定の式
expr だけに対して有効である.まぎらわしくならないように,必要不可欠でない限り,明確な割当ては行わない方がよいだろう.
割当てと置換は混ぜて使ってもよい.割当て定義を使うことで,置換したい項を持った式や,置換操作を施したい規則に名前を与えることができる.
| Out[13]= |  |
|
tの値が参照され,値の中にある xが 2に置換される.
| Out[14]= |  |
|
| Out[15]= |  |
|
まず, xが Piで置換されたときの tの値が求められる.次に,結果が数値的に評価される.
| Out[16]= |  |
|