不定形・無限大
のような式は,数値的な計算をすると不確定(不定形)な結果になる.ただ,
と入力しても,どのような答をユーザが期待しているか Mathematica には全く分からない.もし,
で
の極限を計算させ,結果的に
が発生するなら,必要な答は
であろう.また,もし,
の極限を計算するなら,ほしい答は
であろう.式
だけでは十分な情報を持っていないので,正解が上記の極限か,または,他の演算法で得られる答なのか限定できない.実際に計算させると,答は不確定なもの(indeterminate)として返ってくる.
演算計算で結果が不確定になるときは,警告メッセージが表示され,計算の答として不確定な値Indeterminateが返される.Indeterminateを別の式で使うとその答もまたIndeterminateになる.不確定な結果が一度でも発生すると,続く演算はおかしくなってしまう(Mathematica で使うIndeterminateは,IEEE浮動点規格における「数でない」オブジェクトに相当する).
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
計算プログラムを書いているとき,計算を進めていく上で,不確定な結果が発生したかどうか判断できるかどうかが多くの場合重要になる.この判断をするには,「メッセージ」で触れた関数Checkが使える.この関数は不確定結果に関して警告メッセージの出力があったかどうかを判定するのに使う.
| Indeterminate | 不確定な数値計算の結果 |
| Infinity | 正の無限大 |
| -Infinity | 負の無限大 (DirectedInfinity[-1]) |
| DirectedInfinity[r] | 複素数 r 方向の無限大 |
| ComplexInfinity | 複素平面上で不確定な方向性を持った無限大(無限遠点) |
| DirectedInfinity[] | ComplexInfinityに同等 |
計算で無限な値を扱えると便利な場面が多くある.代数記号Infinityは正の無限大を表す.これを使って和や積分の区間(limits)が指定できる.さらに,無限大を演算の中で直接使える場合もある.
| In[5]:= |
| Out[5]= |
| In[6]:= |
| Out[6]= |
無限大を扱うときには微妙な問題がいくつか発生する.1つは無限大の方向に関する.無限大の積分を計算するとき,通常,複素平面上のある一定方向の無限大までの経路で積分することを考える.その場合,違った方向を取れば違った無限大になる,ということを認識することが重要である.例えば,同じ無限大でも
と
があるように,場合によっては,
等の無限大が必要になることもある.
Mathematica では無限大に複素数の表す方向を与えることができる.正の無限大Infinityを入力したなら,内部ではDirectedInfinity[1]の形に変換される.この形では無限大は
の方向にある点を示す.同様に,-InfinityはDirectedInfinity[-1]として扱われ,IInfinityはDirectedInfinity[I]になる.常にDirectedInfinityの形で内部処理が行われるが,出力形としてはDirectedInfinity[r]がr Infinityを使った記述に再変換される.
| In[8]:= |
Out[8]//FullForm= | |
方向性を持つ無限大という考え方は便利ではあるが,そのような値が常に結果として得られるとは限らない.例えば,
と入力し,無限の値が答として返ってきても,その無限の方向を知ることはできない.
の値は計算するとDirectedInfinity[]として返ってくる.また,標準的な出力形では不確定方向の無限値はComplexInfinityと表示される.
