Mathematica >
Mathematicaチュートリアルチュートリアル »

Mathematica 言語の文法

Mathematica 言語の文法は組込み済みの変換規則から形作られている.文法の規則に従いテキスト形,ボックス形の式が計算可能な式に変換される.規則の中でも特にStandardFormInputFormに対応した規則は重要で,それらがMathematica 言語の中核を構成している.TraditionalFormに対応した規則は目的は前者と同じだが詳細で異なる.
a, xyz, 代数記号
"some text", "+" 文字列
123.456, 3*^45数値
+, ->, 演算子
(*comment*)評価上意味のない入力文

Mathematica 言語における記述成分

テキスト形式で式を入力すると,演算上意味のある成分に分解される.
例えば,xx+yy-zzzzと文字列を入力したら,xx+yy-zzzzの各成分に分解される.xxyyzzzzは代数記号を表すシンボルとして扱われ,+-は演算子として扱われる.
式の演算子が式の構造を決定する.Mathematica で有効な演算子は次の表に示す種類がある.種類により演算子と被演算子の相対的な位置関係が違う.
接頭辞(前置形) !xNot[x]
接尾辞(後置形)x!Factorial[x]
接合辞(中置形)x+y+zPlus[x,y,z]
整合辞{x,y,z}List[x,y,z]
複合形x/:y=zTagSet[x,y,z]
上方演算子OverHat[x]

Mathematica 言語における演算子の種類と例

演算子が正確に機能するには所定の位置に被演算子が配置されていることが必要不可欠である.式に複数の演算子があるときはどの演算子が被演算子を先に取り出すかによって式の解釈に違いが出る.
例えば,a*b+cと入力したら,*+のどちらが被演算子を先に取り出すかで,(a*b)+ca*(b+c)のどちらにもなり得る.
まぎらわしさを解消するため,演算子には固有の優先度が割り当てられている.優先度が高ければ高いほどその演算子の被演算子がより先に取り出されることになる.
上の例の場合は,乗算*は加算+より優先度が高いので,乗算の被演算子がまず取り出される.従って,a*b+ca*(b+c)ではなく,(a*b)+cと解釈される.
乗算*は加算+より優先される.FullFormで見るとなるほどTimesの関数参照が内側にきている.
In[1]:=
Click for copyable input
Out[1]=
//は優先度が低いので,この式では最後に適用される.
In[2]:=
Click for copyable input
Out[2]=
@は優先度が高い.
In[3]:=
Click for copyable input
Out[3]=
演算子の優先度がどうであろうと,カッコで式の要素を適切に囲うことで任意の評価順序を強制できる.
カッコで加算項をくくったので,TimesではなくPlusが内関数になる.
In[4]:=
Click for copyable input
Out[4]//FullForm=
代数記号の拡張指定x_,#2e::s,等
関数適用の指定e[e]e@@e,等
ベキ数の指定ee^e,等
乗算関連の演算指定
ee/eeeee,等
加算関連の演算指定eee+eee,等
関係記号eeeeeeeeee,等
ベクトル量の指定eeeeeee e,等
論理演算記号eee&&eeeee,等
パターン・規則の指定e..e|ee->ee/.e,等
純粋な関数の指定e&
割当て記号e=ee:=e,等
複文型の式の指定e;e

演算子の種類と例

演算子の入力形」の表に,演算子や特殊記号が優先度の高い順に列記してあるので参照のこと.*+等の多くの演算子の優先順位は数学で使う標準的な順位に対応して設定してある.全体の順位はなるべくカッコを使う必要がなくなるように設定してある.
カッコでくくらなくても演算順位通りの評価順序になる.
In[5]:=
Click for copyable input
Out[5]=
FullFormでどのような構造の式が構築されたか確認してみる.
In[6]:=
Click for copyable input
Out[6]//FullForm=
最初の要素にはカッコがないが2番目の要素と同じになる.つまり,カッコを付けても付けなくてもよい.3番目の要素はカッコでくくる必要がある.
In[7]:=
Click for copyable input
Out[7]=
どれも優先しないx+y+zx+y+z
先頭ペア要素から評価x/y/z(x/y)/z
末尾ペア要素から評価x^y^zx^(y^z)

接合辞型の演算子の評価形態別分類

加算の評価順序を見てみよう.関数Plusには引数がいくつあってもよいFlatな関数なので,グループ化は行われない.
In[8]:=
Click for copyable input
Out[8]//FullForm=
次に,ベキ乗の評価順序を見てみる.関数PowerFlatではないので,要素のグループ化が行われる.
In[9]:=
Click for copyable input
Out[9]//FullForm=
Mathematica の文法は,キーボードから直接入力できる文字・記号だけでなく,Mathematica の提供する数々の特殊文字や記号にも対応している.
等の特殊文字も標準アルファベット文字と同様に扱われるし,代数記号としても使える.また,等の特殊記号も同じように使える.
特殊記号によっては演算子として働くものもある.例えば,は中置形の演算子だし,¬は前置形の演算子である.また,は整合辞形の演算子である.
とは中置形の演算子である.
In[10]:=
Click for copyable input
Out[10]//FullForm=
×は掛け算の演算子で記号*と作用は同じである.中置形の演算子でもある.
In[11]:=
Click for copyable input
Out[11]=
特殊記号のいくつかは組み合せることによって,複合形の演算子を形成する.例えば,積分式 f x には の特殊記号がセットで使われる.2つ合わせてはじめて機能するので,複合形の演算子といえる.
を組み合せて積分式を構築する.
In[12]:=
Click for copyable input
Out[12]//FullForm=
評価優先度から考えると, ... の優先度はTimesよりも低いので,カッコは不要である.
In[13]:=
Click for copyable input
Out[13]=
この式ではカッコを使わなければいけない.
In[14]:=
Click for copyable input
Out[14]=
式の入力は1次元的な行モード入力だけでなく,2次元的な数学表記のボックス形式で入力してもよい.2次元的な入力形態もMathematica の文法でカバーしている.
上付き文字のボックス要素はベキ数の指数部と解釈される.
In[15]:=
Click for copyable input
Out[15]=
偏微分記号xf はボックス形の複合形演算子を形成する.
In[16]:=
Click for copyable input
Out[16]=
はより複雑な複合形演算子の一部になっている.
In[17]:=
Click for copyable input
Out[17]=
演算子としての+より優先度が高いことに注意.
In[18]:=
Click for copyable input
Out[18]=