|
3.2.13 特殊関数の取扱い方

特殊関数に適用可能な共通操作のいくつか
ほとんどの特殊関数は,引数が特定の値を取るとき関数の値が簡単な形となる. Mathematicaでは,この種の簡約化は自動的に行われる.
数学で標準的な定数を使い書き直してくれる.
In[1]:= PolyLog[2, 1/2]
Out[1]= 
エアリー関数の特別な場合を,ガンマ関数を使った式に約してくれる.
In[2]:= AiryAi[0]
Out[2]= 
ほとんどの引数では特殊関数を厳密に簡約することは不可能である.そのようなときでも, Mathematicaの数値近似機能を使い必要な精度で特殊関数の近似値を得ることはできる. Mathematicaに組み込まれているアルゴリズムは,特殊関数を定義するパラメータが基本的にどんな値を取ろうが対応できるようになっている.パラメータが実数であっても,複素数であっても対応可能である.
既知でないため,結果を厳密な形で得ることができない.
In[3]:= AiryAi[1]
Out[3]= 
それでも,数値計算による近似はできる.結果を40桁精度で近似させる.
In[4]:= N[AiryAi[1], 40]
Out[4]= 
非常に大きな複素数になるが,それでも Mathematicaは見付けることができる.
In[5]:= N[AiryAi[1000 I]]
Out[5]= 
ほとんどの特殊関数では,その導関数を初等関数や別の特殊関数で表すことが可能である.そうすることが不可能なときでも, Nを適用することで数値近似的な導関数の値を求めることは可能である.
導関数が初等関数で表される.
In[6]:= D[FresnelS[x], x]
Out[6]= 
3におけるガンマ関数の導関数を求める.
In[7]:= Gamma'[3]
Out[7]= 
ゼータ関数の導関数を厳密に表せる式は存在しない.
In[8]:= Zeta'[Pi]
Out[8]= 
それでも, Nを使えば近似値を得ることができる.
In[9]:= N[%]
Out[9]= 
Mathematicaには特殊関数に関する知識が大量に集約されている.基本的には過去に導出された,特殊関数に関するすべての研究結果が入っている. Mathematicaで特殊関数を使うたびに,ユーザはこの知識にアクセスしていることになる.
フレネルの関数を級数展開する.
In[10]:= Series[FresnelS[x], {x, 0, 15}]
Out[10]= 
Mathematicaは,特殊関数を含む非常に多種の積分を行うことができる.
In[11]:= Integrate[AiryAi[x]^2, {x, 0, Infinity}]
Out[11]= 
特殊関数を扱う上で特徴的なことの1つに,異なる特殊関数の間に非常に多くの関係式の成り立つことがあげられる.また,これらの関係式を使うことで式を簡約することができる.

特殊関数を含む式の簡約化
ガンマ関数に対して反射公式が使われる.
In[12]:= FullSimplify[Gamma[x] Gamma[1 - x]]
Out[12]= 
チェビシェフの関数を表した式が使われて簡約化が進められる.
In[13]:= FullSimplify[ChebyshevT[n, z] - k Cos[n ArcCos[z]]]
Out[13]= 
エアリー関数はベッセル関数に関連している.
In[14]:= FullSimplify[3 AiryAi[1] + Sqrt[3] AiryBi[1]]
Out[14]= 

特殊関数を含む式の変形操作
PolyGammaを展開する.もとのより簡単な引数が付いた関数を得ることができる.
In[15]:= FunctionExpand[PolyGamma[2, 2 + x]]
Out[15]= 
これは,ベッセル関数を使った例である.
In[16]:= FunctionExpand[BesselY[n, I x]]
Out[16]= 
ここでは, PolyGammaを使わなくても最終式が求まる.
In[17]:= FunctionExpand[Im[PolyGamma[0, 3 I]]]
Out[17]= 
これは0におけるゼータ関数の2次導関数の式を求める.
In[18]:= FunctionExpand[Zeta''[0]]
Out[18]= 
|