How to | 規則を作成して使う方法
Wolfram言語において変換規則を使うと,記号,関数,その他すべての形の式について局所値を設定することができる.規則の使用は,別の式の全体あるいは一部を指定する値で置換するための強力で拡張可能な方法を提供する.
規則の簡略表記には,右方向の矢印を使う.これは,「->」(-と>の間にスペースを入れない)と入力することによって得る.Wolframシステムのフロントエンドは,「->」を入力し,さらにタイプを続けると,これを自動的に「」に変換する.これらの記号はRuleの簡略形である.
以下の変換規則を作成する.この規則は「xが3になる」という意味であると考えてよい:
「x3」の出力を見ると,この規則は何も行わないことが分かる.出力は規則そのものに過ぎない.これは,規則だけでは何も行わないからである.規則は式と一緒に使ってはじめて役に立つものなのである.
規則は「/.」(ReplaceAllの簡略形)を使って式に適用することができる.この一般的な構文は, expr/.rules(式 /. 規則)である.
2つ以上の規則を式と一緒に使う場合は,規則をリスト{}に入れる:
同じ変数について2つの規則を与えると,Wolfram言語は最初の規則だけを使う:
変数は,単独の値だけでなく,どのような式にでも置き換えることができる.
実際,規則は関数を含めて,どのような式と一緒にでも使うことができる.
f[x]について規則を使う.この規則は厳密にf[x]に一致し,f[y]には影響を与えないことに注意する:
関数fを置換するためには,その引数がどのようなものであっても,規則でパターンを使わなくてはならない.
規則f[x_]x^2は, 「f[anything] goes to anything^2(f[任意の値] は任意の値^2となる)」と読むことができる:
パターンを使うことについての詳細は,「パターンとは」を参照のこと.
「」を使って設定する規則は即時置換規則である.つまり,右辺は規則と同時に評価される:
代りに,規則が式と一緒に使われるまで評価されないようにする遅延置換規則を使う必要がある場合もある.遅延置換規則は,RuleDelayedを使って作成する.
遅延置換規則の簡略形は,「:>」(:と>の間にスペースを入れない)である.Wolframシステムのフロントエンドは,「:>」と入力し,さらにタイプを続けると,これを自動的に「」に変換する.これらの記号は,RuleDelayedの簡略形を表す:
規則を使って,0から1の範囲にある3つのランダムな実数を生成する問題を考えてみる.即時置換規則を使うと,結果として同じ数が3つ生成される:
「=」を使って明示的に設定した割当ては,大域的な影響を及ぼすのに対して,規則は一緒に使った式についてだけ影響を及ぼす.
「=」を使ってxに3を割り当ててから,xを評価してその値をチェックする:
yを評価すると,規則によって割り当てられた値は保存されなかったことが分かる:
規則が影響を与えるようにするには,これを式と一緒に使わなくてはならない.しかし,記号に明示的に規則を割り当ててから,その記号を規則と同じように使うこともできる.
「=」を使って,規則p2をnに割り当ててから,nを式と一緒に使う:
p2は大域的に記号nとして保存されるようになったので,p2の代りに続けてnを使うことができる.