不定形・無限大

のような式を入力すると,答が不確定とのメッセージが表示される.答の値としてはIndeterminateが返ってくる.
In[1]:=
Click for copyable input
Out[1]=

のような式は,数値的な計算をすると不確定(不定形)な結果になる.ただ,と入力しても,どのような答をユーザが期待しているかWolfram言語には全く分からない.もし, の極限を計算させ,結果的にが発生するなら,必要な答はであろう.また,もし, の極限を計算するなら,ほしい答はであろう.式だけでは十分な情報を持っていないので,正解が上記の極限か,または,他の演算法で得られる答なのか限定できない.実際に計算させると,答は不確定なもの(indeterminate)として返ってくる.

演算計算で結果が不確定になるときは,警告メッセージが表示され,計算の答として不確定な値Indeterminateが返される.Indeterminateを別の式で使うとその答もまたIndeterminateになる.不確定な結果が一度でも発生すると,続く演算はおかしくなってしまう(Wolfram言語で使うIndeterminateは,IEEE浮動点規格における「数でない」オブジェクトに相当する).

Indeterminateの演算には,通常の簡約化の規則は当てはまらない.
In[2]:=
Click for copyable input
Out[2]=
演算が何であっても,1つIndeterminateがあると不確定な結果になる.
In[3]:=
Click for copyable input
Out[3]=

計算プログラムを書いているとき,計算を進めていく上で,不確定な結果が発生したかどうか判断できるかどうかが多くの場合重要になる.この判断をするには,「メッセージ」で触れた関数Checkが使える.この関数は不確定結果に関して警告メッセージの出力があったかどうかを判定するのに使う.

プログラムの中にCheckを入れておき警告が発せられたか,確認ができる.
In[4]:=
Click for copyable input
Out[4]=
Indeterminate不確定な数値計算の結果
Infinity正の無限大
-Infinity負の無限大 (DirectedInfinity[-1])
DirectedInfinity[r]複素数 r 方向の無限大
ComplexInfinity複素平面上で不確定な方向性を持った無限大(無限遠点)
DirectedInfinity[]ComplexInfinityに同等

不確定な値と無限大

計算で無限な値を扱えると便利な場面が多くある.代数記号Infinityは正の無限大を表す.これを使って和や積分の区間(limits)が指定できる.さらに,無限大を演算の中で直接使える場合もある.

積分の端点が無限大の例.
In[5]:=
Click for copyable input
Out[5]=
Wolfram言語は無限大の逆数はと分かっている.
In[6]:=
Click for copyable input
Out[6]=
無限大と無限大の差は不確定である.
In[7]:=
Click for copyable input
Out[7]=

無限大を扱うときには微妙な問題がいくつか発生する.1つは無限大の方向に関する.無限大の積分を計算するとき,通常,複素平面上のある一定方向の無限大までの経路で積分することを考える.その場合,違った方向を取れば違った無限大になる,ということを認識することが重要である.例えば,同じ無限大でも があるように,場合によっては, 等の無限大が必要になることもある.

Wolfram言語では無限大に複素数の表す方向を与えることができる.正の無限大Infinityを入力したなら,内部ではDirectedInfinity[1]の形に変換される.この形では無限大は の方向にある点を示す.同様に,-InfinityDirectedInfinity[-1]として扱われ,IInfinityDirectedInfinity[I]になる.常にDirectedInfinityの形で内部処理が行われるが,出力形としてはDirectedInfinity[r]r Infinityを使った記述に再変換される.

InfinityDirectedInfinity[1]に内部で変換される.
In[8]:=
Click for copyable input
Out[8]//FullForm=

方向性を持つ無限大という考え方は便利ではあるが,そのような値が常に結果として得られるとは限らない.例えば,と入力し,無限の値が答として返ってきても,その無限の方向を知ることはできない.の値は計算するとDirectedInfinity[]として返ってくる.また,標準的な出力形では不確定方向の無限値はComplexInfinityと表示される.

と入力すると,不確定方向の無限大(いわゆる無限遠点)が返ってくる.
In[9]:=
Click for copyable input
Out[9]=