WOLFRAM言語チュートリアル

特殊関数の取扱い方

自動評価特定の引数に対し厳密な結果を返す
N[expr,n]任意精度で数値近似する
D[expr,x]厳密な導関数を返す
N[D[expr,x]]導関数を数値近似する
Series[expr,{x,x0,n}]級数展開
Integrate[expr,x]厳密に積分する
NIntegrate[expr,x]積分を数値近似する
FindRoot[expr==0,{x,x0}]根を数値近似する

特殊関数に適用可能な共通操作のいくつか

ほとんどの特殊関数は,引数が特定の値を取るとき関数の値が簡単な形となる.Wolframシステムでは,この種の簡約化は自動的に行われる.

数学で標準的な定数を使い書き直してくれる.
In[1]:=
Click for copyable input
Out[1]=
エアリー(Airy)関数の特別な場合を,ガンマ関数を使った式に約してくれる.
In[2]:=
Click for copyable input
Out[2]=

ほとんどの引数では特殊関数を厳密に簡約することは不可能である.そのようなときでも,Wolframシステムの数値近似機能を使い必要な精度で特殊関数の近似値を得ることはできる.Wolframシステムに組み込まれているアルゴリズムは,特殊関数を定義するパラメータが基本的にどんな値を取ろうが対応できるようになっている.パラメータが実数であっても,複素数であっても対応可能である.

既知でないため,結果を厳密な形で得ることができない.
In[3]:=
Click for copyable input
Out[3]=
それでも,数値計算による近似はできる.結果を40桁精度で近似させる.
In[4]:=
Click for copyable input
Out[4]=
非常に大きな複素数になるが,それでもWolframシステムは見付けることができる.
In[5]:=
Click for copyable input
Out[5]=

ほとんどの特殊関数では,その導関数を初等関数や別の特殊関数で表すことが可能である.そうすることが不可能なときでも,Nを適用することで数値近似的な導関数の値を求めることは可能である.

導関数が初等関数で表される.
In[6]:=
Click for copyable input
Out[6]=
3におけるガンマ関数の導関数を求める.
In[7]:=
Click for copyable input
Out[7]=
ゼータ関数の導関数を厳密に表せる式は存在しない.
In[8]:=
Click for copyable input
Out[8]=
それでも,Nを使えば近似値を得ることができる.
In[9]:=
Click for copyable input
Out[9]=

Wolframシステムには特殊関数に関する知識が大量に集約されている.基本的には過去に導出された,特殊関数に関するすべての研究結果が入っている.Wolframシステムで特殊関数を使うたびに,ユーザはこの知識にアクセスしていることになる.

フレネルの関数を級数展開する.
In[10]:=
Click for copyable input
Out[10]=
Wolframシステムは,特殊関数を含む非常に多種の積分を行うことができる.
In[11]:=
Click for copyable input
Out[11]=

特殊関数を扱う上で特徴的なことのひとつに,異なる特殊関数の間に非常に多くの関係式の成り立つことが挙げられる.また,これらの関係式を使うことで式を簡約することができる.

FullSimplify[expr]各種変換規則を使い式 expr を簡約する

特殊関数を含む式の簡約化

ガンマ関数に対して反射公式が使われる.
In[12]:=
Click for copyable input
Out[12]=
チェビシェフの関数を表した式が使われて簡約化が進められる.
In[13]:=
Click for copyable input
Out[13]=
エアリー関数はベッセル関数に関連している.
In[14]:=
Click for copyable input
Out[14]=
FunctionExpand[expr]特殊関数の展開形を求める

特殊関数を含む式の変形操作

以下はガウスの超幾何関数をより簡単な関数に展開する.
In[15]:=
Click for copyable input
Out[15]=
これは,ベッセル関数を使った例である.
In[16]:=
Click for copyable input
Out[16]=
ここでは,PolyGammaを使わなくても最終式が求まる.
In[17]:=
Click for copyable input
Out[17]=
これはフルヴィッツ(Hurwitz)のゼータ関数の二次導関数の式を求める.
In[18]:=
Click for copyable input
Out[18]=