条件子
Mathematica では,特定条件が満たされるときだけに特定の式を評価させるための指定を行うことができるようになっている.これは,次に示す方法で条件子を設定することで行う.
| lhs:=rhs/;test | 判定式 test の評価結果がTrueのときだけ定義を有効にする |
| If[test,then,else] | 判定式 test がTrueなら式 then を,Falseなら式 else を評価する |
| Which[test1,value1,test2,...] | 判定式 を順に評価していき,最初にTrueになる判定式に対応した値を返す |
| Switch[expr,form1,value1,form2,...] | 式 expr を形 と比較していき,最初にマッチする形に対応した値を返す |
| Switch[expr,form1,value1,form2,...,_,def] | 値 def をデフォルト値として使う |
| Piecewise[{{value1,test1},...},def] | Trueを与える最初の に当たる値を返す |
条件文
判定式は
Falseを与える.このため,「
else」に対応する式

が返される.
| Out[1]= |  |
Mathematica 言語によるプログラムの記述で分枝制御を行うには基本的に2つの方法を使う.1つ目は,単一定義を作り,右辺にIf関数による選択肢を与える方法で,2つ目は,複数の定義を作り,各定義を適切な
条件で制御する方法である.複数の定義を使った方が,プログラムを読みやすくでき,変更も簡単になる.
ステップ関数を定義する.値は

のときに

で,それ以外は

とする.

条件を使い,ステップ関数の正の部分を定義する.

条件を使った定義をすべて表示させる.
選択肢が2つありどちらかを選択するには関数Ifを使うことができる.しかし,選択肢がさらにある場合もある.そのようなときの方法として,ネストさせた複数のIf関数を使うことが考えられる.しかし,普通は,WhichやSwitch等の関数を使う方がよい.
3つの定義域を持つ関数を定義する.第3条件を
Trueとすることで,第1と第2定義域に入らないときのデフォルトを与えておく.
| Out[8]= |  |
| Out[9]= |  |

を法とした引数が取る値に応じて戻り値が変わる関数を定義する.
| Out[11]= |  |

は

にも

にもマッチしない.しかし,パターン

にはマッチする.
| Out[12]= |  |
これは重要なことだが,Mathematica のようなシンボル式の処理システムでは,条件によってはTrueにも,Falseにもならないことがある.したがって,例えば,条件
では,
と
の両方の数値的な値が判明しない限りTrue,Falseの判定は付かない.
| Out[13]= |  |
| Out[14]= |  |
シンボル式による条件を扱うための関数
この式はシンボル的な代数式としてそのまま残される.
| Out[15]= |  |
| Out[16]= |  |

と違い,

では,両辺が明示的に等しいかどうかが判定される.この場合は等しくない.
| Out[17]= |  |
と
の間には次の大きな相違点がある.前者は常にTrueかFalseを返すが,後者はシンボル形式のまま入力を残すことがある(「方程式」を参照).
は式の構造を判定したいときによく使われ,
は数学的な等しさを判定したいときに使う.パターンマッチを行う Mathematica の制御部では,実効的な
の機能が使われ,ある式が別の式に記述通りにマッチするかどうかが判断される.

を使い両辺の構造が同じか判定する.
| Out[18]= |  |
この場合,演算子

はあまり役に立つ結果を出してくれない.
| Out[19]= |  |
条件子の設定において,
のような組合せ条件を使う必要がよくある.この組合せ条件で重要な点は,条件項目
でFalseとなるものがひとつでもあると判定結果はFalseになる,という点である.Mathematica は,条件項目
を1つずつ評価し,
のいずれかがもFalseになると,その時点で判定を打ち切る.
| expr1&&expr2&&expr3 | 条件式 を1つずつ評価していき,ひとつでもFalseになれば評価を打ち切る |
| expr1||expr2||expr3 | 条件式 を1つずつ評価していき,ひとつでもTrueになれば打ち切る |
論理関係式の評価手順
| Out[21]= |  |
最初の条件は
Falseになるので,2番目の条件は判定されない.仮に判定したなら,

のゼロ割エラーが発生してしまう.
| Out[22]= |  |
Mathematica では,先の条件が満たされなければ後の条件は満足されないとする複数条件を並べた論理式を構築することができる.同様な処理手順がC言語のような言語でも見られるが,うまく利用すると各種プログラムを構築する上で便利になる.