式の特殊な入力法
Mathematica では,多くの慣用的な演算子に対して特別な表記を使えるようになっている.例えば,2項の加算は,
Mathematica 内部では
Plus[x, y]と表されるが,その入力は,慣用的な形を使い
x+y とすればよい.
Mathematica 言語には特定の文法が備わっており,入力はそれに従って内部表記へ変換される.文法の規則に入力成分のまとめ方に関するものがある.例えば,この規則によると,
a+b^cと入力された式は,
a+(b^c)に等しいとされるが,
(a+b)^cには等しくない.これは,ベキ乗
(^)は加算
(+)より優先順位が高いとする標準的な数学表記法に基づいた規則である.一般的に,優先順位が高ければ高いほど,その演算項は先にまとめられる.
Mathematicaで使われるすべての特殊入力形には特定の優先順位が割り当てられている.このことは,慣用数学の演算子に限らず,例えば,「
->」や「
:=」の入力形や,
Mathematica プログラムにおける複文形式の式と式の間を区切るセミコロンにもいえる.
「演算子の入力形」の表に,
Mathematica で使えるすべての演算子の優先順位を高い順に掲載した.順位の決定は数学の標準的な使い方が基本になっており,丸カッコをなるべく使わなくて済むように考えられている.
<のような式の左右の関係を表した演算子は,
+等の演算子に比べて順位が低い.これは,
x+y>7等の式を記述するときに丸カッコを使わずに済むようにするためである.
それでも,カッコを使わなければいけない場合は結構ある.例えば,セミコロン(
;)はイコール(
=)より順位が低い.したがって,
x=(a;b)には,丸カッコを入れておく必要がある.もし式を
x=a;bとしたなら,
(x=a);bと解釈されてしまう.一般論として,丸カッコを付けすぎるということはない.その逆に,付け惜しむと,予期しなかった順序で式の項が読み取られてしまい,計算に思わぬ間違いが生じてしまうことがある.
| f [x,y] | f [x, y]標準形 |
| f@x | f [x]前置形(接頭辞) |
| x//f | f [x]後置形(接尾辞) |
| x~f~y | f [x, y]中置形(接合辞) |
関数の4つの表記形
演算子は上記の表記形のどれかを取る.例えば,式
x+y のプラス記号
+は「中置」演算子であり,「
-p」におけるマイナス記号
-は「前置」演算子である.さらに,
f[x, y, ...]等の式を入力するときは,それを,中置,前置,後置形式で記述することもできる.
| Out[1]= |  |
|
「結果的」に, N等の関数を後置的に加えることも可能である.
| Out[2]= |  |
|
この例のように,式によっては中置的に表現した方が分かりやすくなる.
| Out[3]= |  |
|
気が付かれたかもしれないが,2重スラッシュ記号
(//)には非常に低い優先順位が割り当てられている.このため,
//f と,式の末尾に関数の頭部を加えると,式が四則演算でも論理演算の式であっても,頭部
f は式全体にかかってしまう.つまり,
x+y//fとすると,
f[x+y]と解釈される.
x+f[y]とはならない.
前置形演算子
@には高い優先順位が与えられている.このため,
f@x+yは,
f[x+y]ではなく,
f[x]+yと解釈される.
f[x+y]に等しい式を記述するには,前置形式を使い
f@(x+y)とし,引数を丸カッコでくくる.