|
3.1.8 発展:不定形・無限大
0/0のような式を入力すると,答が不確定とのメッセージが表示される.答の値としては Indeterminateが返ってくる.
In[1]:= 0/0


Out[1]= 
0/0のような式は,数値的な計算をすると不確定(不定形)な結果になる.ただ, 0/0と入力しても,どのような答をユーザが期待しているか Mathematicaには全く分からない.もし, で の極限を計算させ,結果的に 0/0が発生するなら,必要な答は 1であろう.また,もし, の極限を計算するなら,ほしい答は 2であろう.式 0/0だけでは十分な情報を持っていないので,正解が上記の極限か,または,他の演算法で得られる答なのか限定できない.実際に計算させると,答は不確定なもの(indeterminate)として返ってくる.
演算計算で結果が不確定になるときは,警告メッセージが表示され,計算の答として不確定な値Indeterminateが返される.Indeterminateな答を別の式で使うとその答もまたIndeterminateになる.不確定な結果が1度でも発生すると,続く演算はおかしくなってしまう.( Mathematicaで使うIndeterminateは,IEEE浮動点規格における「数でない」オブジェクトに相当する.)
Indeterminateの演算には,通常の簡約化の規則は当てはまらない.
In[2]:= Indeterminate - Indeterminate
Out[2]= 
演算が何であっても,1つ Indeterminateがあると不確定な結果になる.
In[3]:= 2 Indeterminate - 7
Out[3]= 
計算プログラムを書いているとき,計算を進めていく上で,不確定な結果が発生したかどうか判断できるかどうかが多くの場合重要になる.この判断をするには,関数Checkが使える.2.9.21で触れたが,Checkは不確定結果に関して警告メッセージの出力があったかどうかを判定するのに使う.
プログラムの中に Checkを入れておき警告が発せられたか,確認ができる.
In[4]:= Check[(7 - 7)/(8 - 8), meaningless]


Out[4]= 

不確定な値と無限大
計算で無限な値を扱えると便利な場面が多くある.代数記号 Infinityは正の無限大を表す.これを使って和や積分の区間(limits)が指定できる.さらに,無限大を演算の中で直接使える場合もある.
積分の端点が無限大の例.
In[5]:= Integrate[1/x^3, {x, 1, Infinity}]
Out[5]= 
Mathematicaは無限大の逆数は と分かっている.
In[6]:= 1/Infinity
Out[6]= 
無限大と無限大の差は不確定である.
In[7]:= Infinity - Infinity

Out[7]= 
無限大を扱うときには微妙な問題がいくつか発生する.1つは無限大の方向に関する.無限大の積分を計算するとき,通常,複素平面上のある一定方向の無限大までの経路で積分することを考える.その場合,違った方向を取れば違った無限大になる,ということを認識することが重要である.例えば,同じ無限大でも と があるように,場合によっては, 等の無限大が必要になることもある.
Mathematicaでは無限大に複素数の表す方向を与えることができる.正の無限大 Infinityを入力したなら,内部では DirectedInfinity[1]の形に変換される.この形では無限大は の方向にある点を示す.同様に, -Infinityは DirectedInfinity[-1]として扱われ, I Infinityは DirectedInfinity[I]になる.常に DirectedInfinityの形で内部処理が行われるが,出力形としては DirectedInfinity[r]が r Infinityを使った記述に再変換される.
Infinityは DirectedInfinity[1]に内部で変換される.
In[8]:= Infinity // FullForm
Out[8]//FullForm= 
方向性を持つ無限大という考え方は便利ではあるが,そのような値が常に結果として得られるとは限らない.例えば, 1/0と入力し,無限の値が答として返ってきても,その無限の方向を知ることはできない. 1/0 の値は計算すると DirectedInfinity[ ]として返ってくる.また,標準的な出力形では不確定方向の無限値は ComplexInfinityと表示される.
1/0と入力すると,不確定方向の無限大(いわゆる無限遠点)が返ってくる.
In[9]:= 1/0

Out[9]= 
|