関数

関数の呼び方
Wolfram言語に組み込まれている関数には,一定の規約に従って名前が付けられている.他のほとんどの組込み関数と同様に,関数にも省略なしの英語単語からなる名前が使われている.例外として,普段よく使う関数には慣用的な省略名が使われている.例えばモジュロ関数がこれに当たり,その関数名はModuloではなくModである.
人名に由来する関数には人名と関数の型を合成した書式 PersonSymbol が使われ名前が付けられている.例えば,ルジャンドル(Legendre)の多項式 を計算する関数はこの書式に従ってLegendreP[n,x]となる.この呼び方だと関数名が長くなりがちだが,曖昧さや混乱を排除することができる.
関数の引数の並び順に関して,上付きと下付きの添字を同時に含む関数では,下付き文字の引数は上付きのものより先に置かれる.つまり,例えば,ルジャンドルの多項式 ならLegendreP[n,m,x]と記述される.
一般解と特殊解
を積分する.結果はほとんどの の値に対して有効である:
の特殊な場合,正しい答は異なる:
記号計算の目的は,変数が取り得るなるべく多くの値において有効な式を得ることである.しかし,是が非でもすべての変数のすべての値で有効な式を求めるということは,場合によっては,実際的なやり方ではない.
は常にで置き換えられる:
しかし,のときは,正解は0ではない:
このように宣言すれば,どちらの場合にも正解になるが,実際的ではない:
Wolfram言語がもし自動的に を0で置き換えなかったら,ほとんどの記号計算はあまり先に進まない.この置換操作は実践的な理由で行われるが,パラメータが特殊な値を取る場合には,不正な結果の原因となるので使用には注意しなければならない.
Wolfram言語は,その基本的な動作として,可能であれば,個々の変数が取り得るほとんどすべての値において求まる結果が有効となるように注意深く設定されている.
は,自動的には に置き換わらない:
もし置き換えられてしまったなら,この結果はになり間違いである:
その前提として は正の実数であるとされ,その後に置換が行われる:
数値操作関数
IntegerPart[x]
x の整数部分
FractionalPart[x]
x の端数部分
Round[x]
x に最も近い整数 x
Floor[x]
x 以下の最大の整数x
Ceiling[x]
x 以上の最小の整数 x
Rationalize[x]
x の有理数近似
Rationalize[x,dx]
許容率 dx 内での有理近似
実数および実整数に関連した関数
xIntegerPart[x]FractionalPart[x]Round[x]Floor[x]Ceiling[x]
2.420.4223
2.520.5223
2.620.6323
-2.4-2-0.4-2-3-2
-2.5-2-0.5-2-3-2
-2.6-2-0.6-3-3-2
数値操作関数の適用例
IntegerPart[x]FractionalPart[x]は,それぞれ小数点の左側の数値と右側の数値に分けるものととらえることができる.Round[x]は,整数に近い数を強制的に厳密な整数に変換するためによく使われる.Floor[x]Ceiling[x]は,非整数間隔を持つ数の列でいくつ要素があるかを調べるためによく使われる.
RealSign[x]
x>0であれば1,x<0であれば-1
UnitStep[x]
x0のとき1x<0のとき0
RealAbs[x]
x の絶対値x
Clip[x]
x を-1から+1の間で切り取ったものを与える
Rescale[x,{xmin,xmax}]
x を0から1の範囲に収まるように再スケールする
Max[x1,x2,]
または
Max[{x1,x2,},]
x1, x2, の中の最大値
Min[x1,x2,]
または
Min[{x1,x2,},]
x1, x2, の中の最小値
実変数の数値操作関数
x+Iy
複素数 x+iy
Re[z]
実数部分 Re z
Im[z]
虚数部分 Im z
Conjugate[z]
共役複素数 z* または
Abs[z]
絶対値 z
Arg[z]
z=zeiϕ の偏角 ϕ
Sign[z]
z0の複素符号 z/z
複素変数の数値操作関数
区分関数
Boole[expr]
exprTrueの場合は1を,Falseの場合は0を返す
条件の数値化
Boole[expr]TrueFalse10に変換する基本的な関数である.これは「特性関数」あるいは「定義関数」と呼ばれることもある.
これは単位円の面積を与える:
Piecewise[{{val1,cond1},{val2,cond2},}]
condiTrueになる最初の vali を返す
Piecewise[{{val1,cond1},},val]
condi がすべてFalseの場合は val を返す
区分関数
異なる領域に対しては異なる形式の関数があると便利なことが多い.Piecewiseを使うとこうすることができる.
これで区分関数をプロットする:
区分関数は異なる領域間を離散的に切り換えるシステムに現れる.これは,スプラインや有限要素を含む多くの計算方法の中心にもなっている.RealAbsUnitStepClipRealSignFloorMax等はその特殊例である.Wolfram言語は区分関数を記号的にも数値的にも扱える.
これは,方形波を生成する:
次は,方形波の積分である:
擬似乱数
Wolfram言語には値上に一様分布する擬似乱数を生成するための関数が3つある.
RandomInteger[]
確率をとした0または1
RandomInteger[{imin,imax}]
iminimax の間の整数の擬似乱数(それぞれを含む)
RandomInteger[imax]
0と imax の間の整数の擬似乱数(それぞれを含む)
RandomReal[ ]
0から1の間の実数値を取る擬似乱数
RandomReal[{xmin, xmax}]
xminxmax の間の実数の擬似乱数
RandomReal[xmax]
0と xmax の間の実数擬似乱数
RandomComplex[]
単位平方の複素数擬似乱数
RandomComplex[{zmin,zmax}]
zminzmax で定義される長方形範囲内の複素数擬似乱数
RandomComplex[zmax]
0と zmax で定義される長方形範囲内の複素数擬似乱数
擬似乱数の生成
RandomReal[range,n]
,
RandomComplex[range,n]
,
RandomInteger[range,n]
指定された範囲にある n 個の擬似乱数のリスト
RandomReal[range,{n1,n2,}]
,
RandomComplex[range,{n1,n2,}]
,
RandomInteger[range,{n1,n2,}]
擬似乱数の n1×n2×配列
擬似乱数表の生成
等しい確率で0か1を与える:
複素数の擬似乱数を与える:
0と9の間(それぞれを含む)の整数の擬似乱数10個のリストを与える:
0と1の間の実数の擬似乱数行列を与える:
RandomRealRandomComplexを使うと,任意精度の擬似乱数を得ることができる.
オプション名
デフォルト値
WorkingPrecisionMachinePrecision
実数または複素数に使用する精度
擬似乱数の精度の変更
30桁の実数値からなる乱数を発生させる.範囲を0から1に限る:
次は20桁の複素数の擬似乱数のリストである:
擬似乱数を繰返し発生させると,特定なパターンに従わない「典型的な」,つまり一般的な数列を得ることができる.このような乱数列は各種の計算用途で使われる.
擬似乱数の一般的な用途として,仮定の数値的な判定への応用がある.例えば,2つのシンボル式が数学的に等しいかどうかを判定するとする.これは,「典型的な」数値をシンボル的パラメータに代入し,数値的な2つの結果を比較することで行うことができる.(ただし,数値精度の問題や,多価複素関数を扱った問題では,このような比較の解釈には注意を要する.)
シンボル的な等式を入力する:
乱数を代入すると,この等式が常にTrueであるとは限らないことが分かる:
擬似乱数の他の一般的用途として,確率的現象のシミュレーションやサイズの大きい母集団からの標本抽出がある.Wolfram言語が数の範囲に対して生成する乱数は,指定された範囲で必ず一様に分布するようになっている.
関数RandomIntegerRandomRealRandomComplexは他のほとんどのWolfram言語組込み関数と違った特徴を持っている.つまり,使われるたびに潜在的な出力値は違ってくる.従って,これらを計算でを使うと,答は使うたびに違ってくる.
RandomIntegerRandomRealRandomComplexで得られる数列は厳密には「真の乱数」ではないが,実用上「十分に乱数的」である.乱数列は,特定の「種(シード)」を開始点として,特定の数学アルゴリズムを適用することで生成される.同じシードが与えられたなら,同じ乱数からなる系列が得られる.
Wolfram言語が起動されたときの時間が(秒以下の精度で記録される)読み込まれ,擬似乱数ジェネレータのシードとして保存される.このため,Wolfram言語を別に起動すれば,擬似乱数列はほとんどいつでも違うものになる.
ここで,毎回必ず同じ乱数系列を使いたいのであれば,同じシードをその都度添加する.このように特別にシードの添加を行うにはSeedRandomを使う.
SeedRandom[]
その日の時間で,擬似乱数ジェネレータを再びシードする
SeedRandom[s]
整数 s で再びシードする
擬似乱数ジェネレータのシード
擬似乱数ジェネレータにシードを添加し直す:
3つの擬似乱数を発生させる:
同じシードを再添加する.すると,前と同じ乱数列が得られる:
RandomIntegerRandomRealRandomComplexが呼び出されるたびに,それに対応する擬似乱数ジェネレータの内部状態は変わる.従属的な計算でこれらの関数を続けて呼び出すと,主計算に返される数に影響が出るかもしれない.これを防ぐには,BlockRandomの内部で計算を実行することにより関数の使用による影響を局所的なものにするとよい.
BlockRandom[expr]
擬似乱数ジェネレータの現在の状態を局所化して,expr を評価する
RandomIntegerRandomRealRandomComplexを使う効果を局所化する
BlockRandom内部の計算を局所化することで,リストが生成された後に,擬似乱数ジェネレータの内部状態を復元することができる:
多くの分野で,非一様分布からの乱数が必要とされる.Wolfram言語には多くの分布が組み込まれている.RandomIntegerRandomRealに対する範囲の代りに適切なパラメータで分布を生成することができる.
RandomInteger[dist]
,
RandomReal[dist]
乱数分布 dist により分布した擬似乱数
RandomInteger[dist,n]
,
RandomReal[dist,n]
乱数分布 dist により分布した n 個の擬似乱数のリスト
RandomInteger[dist,{n1,n2,}]
,
RandomReal[dist,{n1,n2,}]
乱数分布 dist により分布した擬似乱数の n1×n2×配列
非一様分布による擬似乱数の生成
平均3のポアソン分布で分布する12個の整数を生成する:
正規分布を使って実数の4×4行列を生成する:
平均2,標準偏差4の正規分布により分布した5つの高精度の実数を生成する:
リストからの選択するためにも,擬似乱数を使うことができる.RandomChoiceは代替付きで選択し,RandomSampleは代替なしで選択する.
RandomChoice[list, n]
list から無作為に n 個の項目を選ぶ
RandomChoice[list,{n1,n2,}]
list から無作為に選ばれた値の n1×n2×配列
RandomSample[list, n]
list から n を抽出する
無作為の選択
数0から9までの中から無作為に10個選ぶ:
選択肢の中の少なくとも1つは出力に繰り返される確率が非常に高い.これは,要素が選ばれると,それが直ちに補充されるからである.しかし,実際の要素の集合から選ぶ場合は,補充はない.
0から9までの中から,補充なしで10個抽出する.この結果,数のランダムな組み合わせとなる:
異なる頻度を持つ数の集合から10個抽出する:
整数の操作と整数論に関連した関数
Mod[k,n]
n を法とする kkn で割ったときの剰余)
Quotient[m,n]
mn の商(m/n の整数部)
QuotientRemainder[m,n]
商と剰余のリスト
Divisible[m,n]
mn で割り切れるかどうかのテスト
CoprimeQ[n1,n2,]
ni が対で互いに素であるかどうかのテスト
GCD[n1,n2,]
n1, n2, の最大公約数
LCM[n1,n2,]
n1, n2, の最小公倍数
KroneckerDelta[n1,n2,]
ni がすべて等しければクロネッカーのデルタ は1,そうでなければ0
IntegerDigits[n,b]
nb 進法で表したとき各桁に現れる数
IntegerExponent[n,b]
bn で割ったときの最大のベキ
整数に関する関数の例
17を3で割ったときの余り:
17/3の整数部:
Modには実数を使うこともできる:
Modの結果は,第2引数の符号を引き継ぐ:
任意の整数 ab に対して,b*Quotient[a,b]+Mod[a,b]は常に a に等しい.
Mod[k,n]
結果は0から n-1の範囲
Mod[k,n,1]
結果は1から n の範囲
Mod[k,n,-n/2]
結果は-n/2から+n/2の範囲
Mod[k,n,d]
結果は d から d+n-1の範囲
オフセットを含む整数剰余
特にModを使いオブジェクトの部分の指標を得る場合はオフセットを指定すると便利なことがある.
リストを循環的に扱い,18番目の部分を抽出できる:
最大公約数(greatest common divisor)の関数GCD[n1,n2,]は,すべての ni を割り切ることができる最大整数を与える.2つの整数を比の形で入力したなら,Wolfram言語は,GCDを使い共通因数をキャンセルし,約分し尽くした形の有理数を返す.
最小公倍数(least common multiple)の関数LCM[n1,n2,]は,各 ni のすべての因数を含んだ最小整数を与える.
24と15の最大公約数を求めると,3が得られる:
クロネッカー(Kronecker)のデルタ関数KroneckerDelta[n1,n2,]ni すべてが等しいなら1でそうでなければ0である.は完全対称テンソルと考えられる.
階数が3の完全対称テンソルを与える:
FactorInteger[n]
整数 n の素因数とその指数のリスト
Divisors[n]
n を整除する整数のリスト
Prime[k]
k 番目の素数
PrimePi[x]
x 以下の素数がいくつあるか調べる
PrimeQ[n]
n が素数ならTrue,そうでなければFalse
PrimeNu[n]
n における異なる素数の の個数
PrimeOmega[n]
n における重複を数えた素因数 の個数
LiouvilleLambda[n]
リウヴィル(Liouville)関数
MangoldtLambda[n]
マンゴルト(Mangoldt)関数
FactorInteger[n,GaussianIntegers->True]
ガウスの整数 n のガウスの素因数と指数のリスト
PrimeQ[n,GaussianIntegers->True]
n がガウスの素数ならTrue,そうでなければFalse
素因数分解と関連する関数
24の因数はである.因数は,各リストの第1要素で,指数は第2要素である:
もっと大きい整数について因数を探す:
数学的に見て,素因数分解は根本的に難解な問題である.このため,キーボードから簡単にタイプできるような整数でも,天文学的に長い時間をかけなければ分解できないことがある.与えられる整数が50桁程度までの大きさならば,Wolfram言語はFactorIntegerを使うことで難なく分解することができる.特別な場合は,それより大きい整数でも分解できる.
これは大きいが,やや特殊な整数である:
この整数は特別なため,簡単に因数分解される:
Wolfram言語は,整数が大きくなるとそれを分解できないかもしれないが,それでも,それが素数かどうかの判定は行うことができる.また, 番目の素数を素早く探せるようにもなっている.
数を素数に分解するより,それが素数かどうかを判定する方が断然速い:
最初の100個の素数を探させ,値をプロットさせる:
100万番目の素数を探させる:
整数論では,素数の実際の値より素数がどう分布しているかを知る方が重要なことが多い.関数PrimePi[x]を使えば, 以下の素数の個数 を知ることができる.
10億以下の素数がいくつあるかを調べる:
PrimeNun の因数分解における異なる素数の数を与える:
PrimeOmegan における重複を数えた素因数 の数を与える:
リウヴィル関数は, が重複を数えた素因数であるときの を与える:
マンゴルト関数は,合成の場合は素数ベキを基底とする対数またはゼロを返す:
デフォルト設定では,FactorInteger は実整数だけを扱う.しかし,GaussianIntegers->Trueのオプション設定が加えられたなら,整数実数部と整数虚数部からなる複素数のガウス整数も扱うことができるようになる.実素数で一意的に分解することが可能なように,ガウス素数で一意的に分解することが可能である.それでもガウス素数を選択するときは潜在的な曖昧さが残る.このため,Wolfram言語では,常に正の実部と負でない虚数部を持つガウス素数が選択される.ただし,最初の素数としては を許容することとする.
ガウス整数の中でなら,2はとして因数分解することができる:
ガウス整数の因数を探させる:
PowerMod[a,b,n]
モジュラベキ(abn で割った余り)
DirichletCharacter[k,j,n]
ディリクレ記号
EulerPhi[n]
オイラー関数
MoebiusMu[n]
メービウスの関数
DivisorSigma[k,n]
約数関数
DivisorSum[n,form]
n を割り切るすべての i についての form[i]の総和
DivisorSum[n,form,cond]
cond[i]Trueを与える除数のみの総和
JacobiSymbol[n,m]
ヤコビの記号
ExtendedGCD[n1,n2,]
n1, n2, の拡張最大公約数
MultiplicativeOrder[k,n]
kn で割った余りの乗積順序
MultiplicativeOrder[k,n,{r1,r2,}]
剰余 ri の一般化された乗積順序
CarmichaelLambda[n]
カーマイケル関数
PrimitiveRoot[n]
n の原始根
数論関数
モジュラベキ関数PowerMod[a,b,n]は,b>0ならMod[a^b,n]と同じ結果を与える.しかし,PowerModa^b の完全形を生成することを避けられるので,より効果的である.
PowerModを使えば,正のモジュラベキばかりでなく有限体の逆数も求めることができる.例えば,PowerMod[a,b,n]において b が負の値を取る場合,式 の関係を満たす整数 が存在すればそれを与える.(このような整数が存在する場合,それは,必ず n を法(modulo)として一意である.)一方,そのような が存在しない場合,PowerModは未評価のまま残される.
PowerModを使えば,PowerModを組で使ったときと同じ機能を得ることができ,また,より効率よく計算することができる:
7を法とした3の逆数を求める:
この逆数に3を掛け7を法とすると,期待した通りに1が求まる:
が11を法とする3に等しくなるような最小の非負の整数 を見付ける:
結果を検証する:
これは関係を満足する,11より小さい整数すべてを返す:
dn を法とする平方根を持たないならば,PowerMod[d,n]は評価されないままでPowerModListは空リストを返す:
3が5を法とする平方ではないことを検証する:
法が大きい場合でも,平方根は非常に速く計算できる:
PowerMod[d,n]は合成数 にも使える:
与えられた法 k に対して,指標 j でラベル付けされるように, 個の異なるディリクレ記号がある.可能な記号の順序は,慣習により異なることがある.
DirichletCharacterは非常に長い数にも使える:
オイラー(Euler)の関数 は, より小さく,かつ, に対して素となる整数の個数を返す.また, が互いに素ならば が成り立つ(フェルマ(Fermat)の小定理).
メービウス(Möbius)の関数 は, 個の異なる素数の積であるとき となり,1ではない二乗因数を含む場合にとなるよう定義される.もし,すべての に対して ならば,が成り立つ(メービウスの反転公式).ただし, を割り切る正の整数 について和を取る.
約数関数 は, のすべての約数を 乗して加えた和を与える.関数 の約数の個数を与え,等と書かれることもある.また, の除数の総和と等しく,と書かれることもある.
素数 に対しては の関係が成り立つ:
フェルマの小定理により,この結果は必ず1になる:
24のすべての約数をリストに列挙する:
を使い24の約数がいくつあるか調べる:
関数DivisorSum[n,form]n を割り切るすべての i についての form[i]の総和を表す.DivisorSum[n,form,cond]cond[i]Trueを与える除数だけを含む.
5つの正の整数の除数の和のリストを返す:
次はそれぞれの除数 i の値が6より小さくなければならないという条件を課す:
ヤコビ(Jacobi)の記号JacobiSymbol[n,m]は, が奇数で,かつ,素数のとき,ルジャンドルの記号に帰着する.また,ルジャンドルの記号は, で割り切れるとき0に等しい.そうでない場合, が素数 を法とした平方剰余のときに等しく,そうでなければに等しい.ここで, に対して素となる整数 は, の関係を満たす整数 が存在するとき, を法とする平方剰余である,という.一般の場合のヤコビの記号は, となる各素因数 に関するルジャンドルの記号の全体の積である.
拡張最大公約数ExtendedGCD[n1,n2,]は, の最大公約数とし,となる整数としたときのリストを返す.拡張最大公約数は,線形(不定)方程式の整数解を求める際に重要な役割を果たす.
リストの第1要素が105と196の最大公約数である:
数の第2ペアは の関係を満たす:
乗積順序関数MultiplicativeOrder[k,n] となるような最小の整数 を与える.この を法とする の次数としても知られている.という表記もしばしば使用される.
一般化された乗積順序関数MultiplicativeOrder[k,n,{r1,r2,}]は任意の に対して が成り立つような最小の整数 を与える.MultiplicativeOrder[k,n,{-1,1}]と表記され で法とする部分順序関数として知られている.MultiplicativeOrder[k,n,{a}] を法とする基底 に関する の離散対数としても知られている.
カーマイケル(Carmichael)関数あるいは最小普遍指数 と互いに素であるようなすべての整数 に対して であるような最小の整数 を与える.
ContinuedFraction[x,n]
x の連分数表現の最初の n 項を生成する
FromContinuedFraction[list]
連分数表現から数値を再構築する
Rationalize[x,dx]
許容率 dxx の有理近似を求める
連分数
の連分数表現の最初の10項を生成する:
連分数項のリストで代表される数値を再構築する:
結果は に近い:
これは の有理近似を直接与える:
連分数は数論でよく現れる.有理数の連分数表現は途中で打ち切られる.二次無理数は連分数表現を持ち,それは反復する.
ContinuedFraction[x]
有理数または二次無理数の完全な連分数表現
QuadraticIrrationalQ[x]
x が二次無理数であるかどうかをテストする
RealDigits[x]
有理数の完全な数列
RealDigits[x,b]
b を基底とする完全な数列
数値の完全な表現
の連分数表現は8で始まり,限りなく反復される数列からなる:
が連分数表現から再構築される:
次は二次無理数である:
3/7を循環小数で表す:
FromDigitsはもとの数値を再構築する:
連分数の近似分数は無理数を有理数で近似するときによく使われる.この近似は上と下から交互に起り,項の数で指数関数的に収束する.さらに,単純な連分数の近似分数 は分母が 以下の他のどのような有理近似よりもよいものとなる.
Convergents[x]
x の有理近似のリストを与える
Convergents[x,n]
最初の n 個の近似だけを与える
連分数の近似分数
次は,連分数展開から派生した,101/9801の有理近似のリストを与える:
最初の10の近似分数だけをリストする:
数値精度が尽きるまで,連続した の有理近似をリストする:
厳密な無理数の場合は,項の数を明示的に与えなければならない:
LatticeReduce[{v1v2,}]
整数ベクトル vi の集合に対する格子基底縮小
HermiteDecomposition[{v1,v2,}]
整数ベクトル vi の集合に対する階段型
整数格子の関数
格子縮小関数LatticeReduce[{v1,v2,}]は,現代のアルゴリズムの数種類で使われる.この基本的な考え方は,整数のベクトル を数学的な「格子」として考えることである.格子の中の点を表すベクトルはすべて形式 は整数)の線形結合として書くことができる.特定の格子では,「基底ベクトル」 に対して多くの選択肢がある.LatticeReduceが行うのは,ある特定の性質を持つ,この格子の基底ベクトル の縮小集合を見付けることである.
3つの座標軸に沿った3つの単位ベクトルはすでに縮小基底を形成している:
3つのベクトルにより指定された四次元の格子に対する縮小基底を与える:
最後の例では,LatticeReduceはほぼ平行なベクトルをより垂直なベクトルで置き換えている.この過程で,非常に短い基底ベクトルが見付かる.
行列 では,HermiteDecomposition がユニモジュラ, が行縮小形式となるような行列 を与える.RowReduceとは対照的に,整数環には分数はないので,軸は1より大きいことがある.軸より上の要素は,軸の行の適切な倍数を引くことにより最小化される.
この場合,もとの行列は行階段型だったので,復元される:
これは必要とされる条件を満たす:
ここでは,2つ目の行列が1より大きい軸と,軸の上に非零の要素を持つ:
DigitCount[n,b,d]
n を基底 b で表現したときに現れる数 d の個数
数カウント関数
数77の基底2による表現:
基底2による表現での1の個数を直接計算する:
数カウント関数のプロットは自己相似となる:
BitAnd[n1,n2,]
整数 ni のビットごとのAND
BitOr[n1,n2,]
整数 ni のビットごとのOR
BitXor[n1,n2,]
整数 ni のビットごとのXOR
BitNot[n]
整数 n のビットごとのNOT
BitLength[n]
整数 n のバイナリビットの数
BitSet[n,k]
整数 n でビット k を1に設定する
BitGet[n,k]
整数 n からビット k を得る
BitClear[n,k]
整数 n のビット k を0に設定する
BitShiftLeft[n,k]
整数 nk ビットだけ左にシフトし,ゼロで充填する
BitShiftRight[n,k]
右にシフトし,最後の k ビットを削除する
ビットごとの演算
ビットごとの演算はバイナリビットで表現された整数に施される.BitAnd[n1,n2,]はバイナリビット表現で ni のすべてに1がある場所に,バイナリ表現で1がある整数を与える.BitOr[n1,n2,]はバイナリビット表現で任意の ni に1がある場所に1がある整数を与える.BitXor[n1,n2]n1または n2のどちらかだけに1がある場所にバイナリビット表現で1がある整数を与える.BitXor[n1,n2,]は奇数個の ni に1がある場所に1がある整数を与える.
基底2で入力された数値23と29のビットごとのANDを計算する:
ビットごとの演算は様々な組合せ論アルゴリズムで使用される.また低レベルのコンピュータ言語でもビットフィールドの操作によく使用される.しかしそれらの言語では整数は通常は8の倍数であるような限られた桁数しか許されない.Wolfram言語でのビットごとの演算では無限の桁数の整数を扱うことができる.負の整数の場合は,左に1の数列が無限にあるような2の補数で表現される.これによりBitNot[n] と同等となる.
SquareFreeQ[n]
n が平方因子を含んでいない場合はTrue,含んでいる場合はFalseを返す
平方因子のテスト
SquareFreeQ[n]n が平方の素因数を持つかどうかを確認する.これはを計算し,結果がゼロであるかどうかを見て行われる.ゼロの場合は n は無平方ではなく,ゼロでない場合は無平方である.MoebiusMu[n]の計算を行うと,n の最小の素因数 q が求められる.n以下の小さな素因数を持つ場合は,MoebiusMu[n]の計算は非常に速い.持たない場合は,q を求めるのにFactorIntegerが使われる.
次の素数の積は平方因子を含まない:
60は平方数4で割り切れる:
SquareFreeQは大きな整数にも対応できる:
NextPrime[n]
n より大きい最小の素数を返す
RandomPrime[{min,max}]
min より大きく max より小さいランダムな素数を返す
RandomPrime[max]
max より小さいか等しいランダムな素数を返す
RandomPrime[{min,max},n]
min より大きく max より小さい n 個のランダムな素数を返す
RandomPrime[max,n]
maxより小さいか等しいランダムな素数を n 個返す
素数を求める
NextPrime[n]p>n である最小の p を求める.このアルゴリズムは n より大きい奇数にPrimeQを適用して直接探す.
これは,10より大きい最初の素数を与える:
大きな数についても,比較的素早く計算できる:
34より小さい最大の素数を求める:
RandomPrime[{min,max}]RandomPrime[max]については,ランダムな素数 p は,max が小さな場合は素数参照表からランダムに選択し,max が大きな場合にはその範囲内の整数のランダム検索で求める.指定の範囲に素数が存在しない場合は,入力は評価されずに返され,エラーメッセージが表示される.
10から100までの間でランダムに選んだ素数:
PrimePowerQ[n]
n が有理数の素数の正の整数ベキであるかどうかを判別する
素数ベキを含むかどうかのテスト
PrimePowerQのアルゴリズムは,まず n の最小の素因数 p を計算し,次に1が得られるまで(この場合,n は素数のベキ乗),または不可能になるまで(この場合,n は素数のベキ乗ではない)p による除算を試みる.
次の数は1つの素数のベキ乗である:
GaussianIntegers上では,これは素数ベキである:
ChineseRemainder[list1,list2]
Mod[r,list2]==list1である非負の最小の整数 r を返す
連立合同式を解く
中国余剰定理(Chinese Remainder Theorem)によると,連立合同式のある特定のクラスには常に解が存在する.ChineseRemainder[list1,list2]を使うと,Mod[r,list2]list1である非負の最小の整数 r が求められる.解は list2の要素の最小公倍数の唯一のモジュロである.
次の式は,およびを意味している:
結果を検証する:
リストが長くなっても極めて速く計算できる:
PrimitiveRoot[n]
n の原始根を1つ返す.n は素数のベキか素数のベキの2倍である
原始根の計算
PrimitiveRoot[n]は, の乗算で,n と互いに素である数の群の生成元を返す.生成元は n が2,4,奇数の素数のベキ乗,または奇数の素数のベキ乗の2倍である場合にのみ存在する.n が素数または素数のベキ乗の場合は,正の最小の原始根が返される.
これは5の原始根である:
群を生成することを確認する:
次は,素数のベキ乗の原始根である:
次は,素数のベキ上の2倍の原始根である:
引数が合成数であり,素数のベキ乗でも素数の2倍のベキ乗でもない場合,この関数は評価されない:
SquaresR[d,n]
整数 nd 個の2乗の数の和として表したときの表記の数を返す
PowersRepresentations[n,k,p]
整数 n を非負の p 番目の整数ベキ k 個の和として表す方法を返す
平方の和あるいは他のベキとしての整数の表記
101を3個の数の平方和として表す:
組合せ関数
n!
階乗
n!!
二重階乗
Binomial[n,m]
二項係数
Multinomial[n1,n2,]
多項係数
CatalanNumber[n]
カタラン(Catalan)
Hyperfactorial[n]
超階乗
BarnesG[n]
バルネス(Barnes)のG関数
Subfactorial[n]
個のオブジェクトの乱列の数
Fibonacci[n]
フィボナッチ(Fibonacci)
Fibonacci[n,x]
フィボナッチ多項式
LucasL[n]
リュカ(Lucas)
LucasL[n,x]
リュカ多項式
HarmonicNumber[n]
調和数
HarmonicNumber[n,r]
次の調和数
BernoulliB[n]
ベルヌーイ(Bernoulli)
BernoulliB[n,x]
ベルヌーイ多項式
NorlundB[n,a]
ネールルンド(Nörlund)多項式
NorlundB[n,a,x]
一般化されたベルヌーイ多項式
EulerE[n]
オイラー(Euler)
EulerE[n,x]
オイラーの多項式
StirlingS1[n,m]
第一種のスターリング(Stirling)
StirlingS2[n,m]
第二種のスターリング数
BellB[n]
ベル(Bell)
BellB[n,x]
ベル多項式
PartitionsP[n]
整数 を整数の和に分けるときの分け方の総数
IntegerPartitions[n]
整数の分け方
PartitionsQ[n]
整数 を互いに異なる整数の和に分けるときの分け方の総数
Signature[{i1,i2,}]
順列の符号
順列組合せの関数
階乗関数 は, 個のものの並べ方の総数を与える. が整数でないとき,の数値は「特殊関数」で説明するガンマ関数から求められる.
二項係数の関数Binomial[n,m]は,と書ける.この関数は,並び順を考慮しないとき, 個のものの中からの 個のものの取出し方の数を与える.また,各種の木の枚挙問題に現れるカタラン数は,二項係数により,の関係式で与えられる.
かく乱順列Subfactorial[n]は,オブジェクトがひとつも固定されない 個のオブジェクトの置換の数を与える.このような置換は乱列と呼ばれる.かく乱順列は で与えられる.
多項係数Multinomial[n1,n2,]は,と書け, 個の異なるものを大きさ 個の集合に分ける方法の総数を表す().
Wolfram言語は,整数の階乗に対しては厳密な整数で結果を返す:
非整数の階乗は,ガンマ関数で評価される:
Wolfram言語は,二項係数によっては,シンボル的な結果を返すこともできる:
個のものを6個と5個のものからなる組に分けるとき,分け方が何通りあるかを調べる:
この結果は,と同じである:
フィボナッチの数Fibonacci[n]は,のときに漸化式 を満たす.この数は離散数学で広く使われる. を増加させると,は黄金比に近付く.リュカ数LucasL[n]は,初期値が の,フィボナッチ数と同じ循環関係を満足する.
フィボナッチの多項式Fibonacci[n,x]は,式 の展開で得られる項 の係数に当たる.
調和数HarmonicNumber[n] で与えられる. 次の調和数HarmonicNumber[n,r] で与えられる.調和数は多くの組合せ論の推定問題で現れ,しばしば離散化された対数に相当する役割を演じる.
ベルヌーイの多項式BernoulliB[n,x]は,母関数の関係式 を満たす.また,ベルヌーイ数BernoulliB[n]は,で与えられる. は,近似積分で使われるオイラー・マクローリン(EulerMaclaurin)総和の式における項の係数に当たる.ベルヌーイ数はジェノッチ数と の関係にある.
ベルヌーイ数の近似値はさまざまな数値計算アルゴリズムで使われる.ベルヌーイ数の数値は,まずBernoulliB[n]を使い厳密な有理値として求めておき,それにNを適用することで求められる.
オイラーの多項式EulerE[n,x]は,母関数の関係式を満たす.また,オイラー数EulerE[n]は,で与えられる.
ネールルンド多項式NorlundB[n,a]は母関数の関係式 を満足する.ネールルンドは,のときベルヌーイ数を返す. が他の正の整数値である場合,ネールルンド多項式は高次のベルヌーイ数を返す.一般化されたベルヌーイ多項式NorlundB[n,a,x] は,母関数の関係式 を満足する.
ベルヌーイの多項式の第2項 を求める:
また,実際に母関数に対してベキ級数を計算してもベルヌーイの項は求めることができる:
BernoulliB[n]は,ベルヌーイ数を厳密な有理数として返す:
スターリング数は組合せ理論の枚挙問題によく現れる.第一種のスターリング数StirlingS1[n,m]に対して,は,ちょうど 回循環する 個の要素の順列の個数を返す.スターリング数は,母関数の関係式 を満たす.注意点として, の定義によっては, の係数が付くためWolfram言語の定義と異なる場合がある.
第二種のスターリング数StirlingS2[n,m]と記述されることもあるが, 個の要素を空でない 組の部分集合に分ける上で何通りの分け方があるかを返す.第二種のスターリング数は,の関係式を満たす.
ベル数BellB[n]は,要素数 個の集合を空ではない部分集合分割する方法の総数を与える.ベル多項式BellB[n,x]は,生成関数関係 を満足する.
分割関数PartitionsP[n]は,整数 を正整数の和として順不同で組み合すとき,組合せ方が何通りあるかを返す.PartitionsQ[n]は,和を構成する整数成分が相異するとき,整数 の組合せ方が何通りあるかを返す.
IntegerPartitions[n]は,長さがPartitionsP[n] の分割のリストを与える.
第一種のスターリング数の表を作る:
積の展開項の係数がスターリング数に当たる:
これは,4の分割である:
分割数はPartitionsP[4]で与えられる:
100を何通りに分割できるかを調べる.最初は項が相異なるとし,次は制約を外した場合である:
分割関数 に似た形で増加する.注意点として,PartitionsPのような整数だけを引数とする関数は,Plotでは直接プロットすることができない:
ここで説明してきた関数のほとんどは,各種の組合せの数を数えるのに使われる.これらとは違って,IntegerPartitionsPermutationsのような関数は,要素の組合せそのもののリストを生成するために使われる.
符号関数Signature[{i1,i2,}]は順列の符号を返す.偶順列ならを返し,奇順列ならを返す.偶順列(もしくは,奇順列)とは順列が偶数回(奇数回)の互換(2つの要素の入れ替え)で得られることを指す.符号関数は,交代テンソルであるレヴィ・チヴィタ(LeviCivita)の記号,または,イプシロン記号としてとらえることができる.
ClebschGordan[{j1,m1},{j2,m2},{j,m}]
クレプシュ・ゴルダン(Clebsch Gordan)の係数
ThreeJSymbol[{j1,m1},{j2,m2},{j3,m3}]
ウィグナー(Wigner)の3j 記号
SixJSymbol[{j1,j2,j3},{j4,j5,j6}]
ラカー(Racah)の6j 記号
角運動量の合成に関する係数
クレプシュ・ゴルダンの係数と j記号は,量子力学における角運動量の解析や,その他の回転群の応用の問題で使われる.クレプシュ・ゴルダンの係数ClebschGordan[{j1,m1},{j2,m2},{j,m}]は,量子化された角運動量の状態を展開したとき得られる項の係数を状態の積で与える.
3j記号あるいはウィグナー係数のThreeJSymbol[{j1,m1},{j2,m2},{j3,m3}]は,クレプシュ・ゴルダンの係数より高い対称性を持つ.Wolfram言語における定義では,クレプシュ・ゴルダンの係数は,3j記号に基づいた の関係式で与えられる.
ラカーの6j記号SixJSymbol[{j1,j2,j3},{j4,j5,j6}]は,3つの量子論的な角運動量の取る結合状態を与える.ラカーの係数と6j記号は1位相を介し関連している.
3j記号でシンボル的なパラメータを使っても構わない:
初等超越関数
Exp[z]
指数関数
Log[z]
自然対数関数
Log[b,z]
を底とする対数関数
Log2[z]
,
Log10[z]
底を2および10とする対数関数
Sin[z]
,
Cos[z]
,
Tan[z]
,
Csc[z]
,
Sec[z]
,
Cot[z]
三角関数 (引数はラジアン)
ArcSin[z]
,
ArcCos[z]
,
ArcTan[z]
,
ArcCsc[z]
,
ArcSec[z]
,
ArcCot[z]
逆三角関数 (結果はラジアン)
ArcTan[x,y]
の偏角
Sinh[z]
,
Cosh[z]
,
Tanh[z]
,
Csch[z]
,
Sech[z]
,
Coth[z]
双曲線関数
ArcSinh[z]
,
ArcCosh[z]
,
ArcTanh[z]
,
ArcCsch[z]
,
ArcSech[z]
,
ArcCoth[z]
逆双曲線関数
Sinc[z]
シンク関数
Haversine[z]
半正矢関数
InverseHaversine[z]
半正矢関数の逆関数
Gudermannian[z]
グーデルマン関数
InverseGudermannian[z]
グーデルマン関数の逆関数
初等超越関数
Wolfram言語は,可能であれば対数に対して厳密な結果を与える.ここでは,を計算させる:
数学関数であれば,その値は任意の桁で求めることができる:
この場合,結果は複素数で与えられる:
Wolfram言語は,引数を複素数とする対数も評価することができる:
三角関数の引数は常にラジアンで与えられる:
特別に定数Degreeを掛けておけば,度数でも入力することができる:
双曲正接関数をプロットする.独特のS字形曲線が得られる:
半正矢関数Haversine[z]で定義される.半正矢関数の逆関数InverseHaversine[z]で定義される.グーデルマン関数Gudermannian[z]として定義され,その逆関数InverseGudermannian[z]で定義さえる.グーデルマン関数はの関係を満足する.シンク関数Sinc[z]は平方信号のフーリエ変換である.
上記の関数の他にも特殊な三角関数や双曲線関数がある.正矢関数は文献に記載されていることがあり,単にである.余矢関数はと定義される.複素指数関数 と書かれることもある.
一意的な値を持たない関数
の平方根 を求めるということは,実際には,方程式 の解を求めることである.ところが,一般に,この方程式には解が2つ存在する.例えば,に対して,解は,の2つがある.を「関数」と見立ててそれを評価するとき,通常,単一な値を結果として得たいので,一方を選択しなければいけない.なら,は正とする,というのが標準的な選択である.Wolfram言語の関数Sqrt[x]も正を選択をするようになっている.
2つの解から単一の解を選ばなければならないということは,Sqrt[x]の操作は,x^2の真の逆関数ではないということになる.つまり,与えられた数の二乗を取り,二乗した値から平方根を求めても必ずしももとの数は得られない.
を計算すると,が返ってくる.は得られない:
二乗した値から平方根を取っても必ずしももとの値は得られない:
を評価すると,可能な解として がある.この場合は,どちらの解を優先すべきかは上の場合ほど明確に定められない.
実際,すべての複素数 に対して連続となるようにの値を選択することは不可能である.複素平面上に「分岐」と呼ばれる半直線を設定し,その半直線を越えて動くときは不連続となる.Wolfram言語では,に対する分岐を負の実軸に沿うものとする標準的な規約が使われている.
求まるのは で, ではない:
Sqrtにおける負の実軸に沿った分岐は次のことを意味する.つまり, が軸のすぐ上とすぐ下のどちらの値を取るかで,Sqrt[z]の値は大きく変わる:
二乗すると両方とも近い値である:
平方根の虚部を3Dプロットする.負の実軸に沿って不連続になっているのがよく分かる:
を用いて 乗根を求めるとき,原理的には結果に 通りの可能性がある.単一の値を得るには,特定の「主根」を選ぶ必要がある. 乗したベキ数から 乗根を求めてももとの数が得られるという保証はない.
複素数を10乗する.得られる値は一意的に決まる:
10個の10乗根が可能であるが,その中の1つだけが実際に使われる.この場合は,10乗根が取られたもとの数ではない:
平方根のような,基本的に方程式の解を見出す関数がいくつもある.対数関数や逆三角関数もこの種の関数に当たる.これらを使うほとんどの方程式問題では,方程式には複数の解が存在する.それでも,一意的な「主」値を選択する必要がある.このとき,全複素平面において連続となる主値を選択することはできない.このため,不連続な線,つまり,分岐が存在する必要がある.これらの分岐をどの位置に取るかは本来任意である.Wolfram言語では,数学で最も標準的とされる分岐位置が採用されている.
Sqrt[z]
および
z^s
Re のときRe のとき は整数ではない)
Exp[z]
なし
Log[z]
三角関数
なし
ArcSin[z]
および
ArcCos[z]
および
ArcTan[z]
および
ArcCsc[z]
および
ArcSec[z]
ArcCot[z]
双曲線関数
なし
ArcSinh[z]
および
ArcCosh[z]
ArcTanh[z]
および
ArcCsch[z]
ArcSech[z]
および
ArcCoth[z]
複素平面上で設定されている分岐.その線上で関数は不連続となる
ArcSinは多価関数であるから,常にSinの「逆」が得られるという保証はない:
分岐の両側において,ArcSin[z]の値は大きく異なる:
三次元で の虚部をプロットする.2ヵ所で分岐が入っているのが分かる:
数学で用いられる定数
I
Infinity
Pi
Degree
: 度数をラジアンに直す定数
GoldenRatio
E
EulerGamma
オイラーの定数
Catalan
カタランの定数
Khinchin
ヒンチンの定数
Glaisher
グレシャーの定数
数学で用いられる定数
オイラーの定数EulerGammaの極限として与えられる.さまざまな積分や漸近式に使われる.オイラーの定数はオイラー・マスケロニ(EulerMascheroni)の定数とも呼ばれ, で記されることもある.
カタラン数Catalanは,の和で与えられ,組合せ関数の漸近評価に使われる.これは 等さまざまに表記される.
ヒンチン(Khinchin,Khintchineともつづられる)の定数Khinchinで与えられる.通常の実数を連分数で表現した項の幾何平均を与える.
グレシャー(Glaisher)の定数Glaisher (グレシャー・キンキリン(GlaisherKinkelin)の定数とも呼ばれる)は を満足する.ここで はリーマンのゼータ関数である.特にガンマ関数およびゼータ関数を含む,各種総和および積分で使用される.
数学の定数なら,任意の桁で評価することができる:
厳密計算も可能である:
多項式の直交系
LegendreP[n,x]
ルジャンドルの多項式
LegendreP[n,m,x]
ルジャンドルの陪多項式
SphericalHarmonicY[l,m,θ,ϕ]
球面調和関数
GegenbauerC[n,m,x]
ゲーゲンバウアの多項式 (x)
ChebyshevT[n,x]
,
ChebyshevU[n,x]
第一種チェビシェフの多項式 と第二種チェビシェフの多項式
HermiteH[n,x]
エルミートの多項式
LaguerreL[n,x]
ラゲールの多項式
LaguerreL[n,a,x]
ラゲールの一般化多項式
ZernikeR[n,m,x]
ゼルニケのラジアル多項式
JacobiP[n,a,b,x]
ヤコビの多項式
多項式の直交系
ルジャンドルの多項式LegendreP[n,x]は,球対称系の問題で使われる.この多項式は微分方程式を満たし,また, のとき,直交関係 を満たす.
ルジャンドルの陪多項式LegendreP[n,m,x]は,ルジャンドルの多項式の導関数を用いて で与えられる.奇数の整数 とき,のベキを含むため,厳密には多項式にならないことに注意のこと.また,のとき,に帰着する.
球面調和関数SphericalHarmonicY[l,m,θ,ϕ]は,ルジャンドルの陪多項式に関連して定義される.または のとき,同関数は直交関係 を満たす.ここで は単位球面について積分することを示す.
ルジャンドルの多項式 を多項式に展開する:
ルジャンドルの多項式の持つ直交性により, はゼロになる:
ルジャンドルの多項式を2乗し積分すると,ゼロにはならない:
高次のルジャンドル多項式は振動しながら急速に増大する:
ルジャンドルの陪「多項式」は分数ベキを含む:
「特殊関数」にあるように,ルジャンドルの多項式は非整数の次数を持つルジャンドル関数に一般化される:
ゲーゲンバウア(Gegenbauer)の多項式GegenbauerC[n,m,x]は,次元の球対称の系に対して一般化されたルジャンドルの多項式と見ることができる.また,このために超球関数とも呼ばれる.
GegenbauerC[n,0,x]は常に0になるが,GegenbauerC[n,x]は,極限 で与えられる.後者は とも記述される.
チェビシェフ(Chebyshev)の多項式は関数の近似値を求めるのによく使われる.第一種チェビシェフの多項式ChebyshevT[n,x]で定義され,になるように標準化されている.この多項式は のとき,直交関係 を満たす.さらに,の根に相当する の離散点で和を取っても直交関係を満たす.
第二種チェビシェフの多項式ChebyshevU[n,z]は, で定義される.この定義から となる.また, のとき直交関係 を満たす.
「Chebyshev」という名前はロシア語のキリル文字の英語読みからきている.「Tschebyscheff」等と綴られることもある.
エルミート(Hermite)の多項式HermiteH[n,x]は,量子力学における調和振動子の波動関数に使われる.これは,微分方程式 を満たし,さらに のとき,直交関係 を満たす.エルミートの多項式はこの他に という別の形も使われることがある.(の,全く異なる標準化が用いられることもある.)
エルミートの多項式は,ウェーバー(Weber)関数とも呼ばれる放物柱面関数 の関係式で関連している.
量子力学における調和振動子の励起状態の密度をプロットする.振幅値の平均が古典力学の結果に近くなる:
ラゲール(Laguerre)の一般多項式LaguerreL[n,a,x]は,量子力学における水素原子の波動関数に関係している.同多項式は,微分方程式 を満たし,さらに のとき直交関係 も満たす.ラゲールの多項式LaguerreL[n,x]は,一般式の特殊な場合 に対応している.
任意の数 に対しラゲール一般多項式を得る:
ゼルニケのラジアル多項式ZernikeR[n,m,x] は光学における収差の研究に使われ, のとき直交関係 を満足する.
ヤコビの多項式JacobiP[n,a,b,x]は,量子力学等の回転群の問題でよく使われる.同多項式は, のとき直交関係 を満たす.ルジャンドル,ゲーゲンバウア,チェビシェフの多項式はすべてヤコビの多項式の特殊形ともみなせる.ヤコビの多項式が の関係式で定義されるときもある.
特殊関数
数理物理学で一般的に使われ,標準的なハンドブックに載っているような特殊関数はすべてWolframシステムに入っている.さまざまな種類の特殊関数を順に見ていこう.
文献によっては特殊関数の定義が異なることがある.Wolframシステムで特殊関数を使うとき,関数が以下に示す関係式で定義されるものであることを確認の上使う必要がある.
特殊関数でも,特定の値に対しては厳密な関数値を得ることができる:
今度は,結果の値を既知の形では表現できない:
一方,数値的な結果なら,任意の桁でも求めることができる:
特殊関数を複素数について計算することも可能である:
特殊関数をリストの各要素に自動的に適用する:
Wolframシステムは,導関数等の特殊関数の解析的特性をわきまえている:
FindRootを使い,特殊関数であっても,その根を探すことができる:
Wolframシステムにおいて特殊関数は,通常任意の複素数の引数に対して評価することができる.しかし,多くの場合,このチュートリアルで示す定義関係式は,引数が特定の値を取るときに限り有効となる.そのような場合,完全な関数はこれらの関係式の適正な拡張,つまり「解析接続」に対応する.例えば,関数の積分表記は,該当する積分が存在するときに限って有効であるが,関数自体は解析接続により別の点においても通常定義することができる.
関数の定義域をどう拡張できるか, の簡単な和を例に考えてみる.和はのときだけに収束する.それでも,任意の に対して,この和を解析接続して得られる関数が に等しい,ということは簡単に解析的に証明できる.この形を使うことで,少なくとも でさえあれば,任意の に対して,和の関数の値を簡単に求めることができる.

ガンマ関数とこれに関連した関数

Beta[a,b]
オイラーのベータ関数
Beta[z,a,b]
不完全ベータ関数
BetaRegularized[z,a,b]
正則化された不完全ベータ関数
Gamma[z]
オイラーのガンマ関数
Gamma[a,z]
不完全ガンマ関数
Gamma[a,z0,z1]
一般化された不完全ガンマ関数
GammaRegularized[a,z]
正則化された不完全ガンマ関数
InverseBetaRegularized[s,a,b]
正則化された逆ベータ関数
InverseGammaRegularized[a,s]
正則化された逆ガンマ関数
Pochhammer[a,n]
ポッホハンマーの記号
PolyGamma[z]
ディガンマ関数
PolyGamma[n,z]
ディガンマ関数の 次導関数
LogGamma[z]
オイラーの対数ガンマ関数
LogBarnesG[z]
バルネスのG関数の対数
BarnesG[z]
バルネスのG関数
Hyperfactorial[n]
超階乗関数
ガンマ関数とこれに関連した関数
オイラーのガンマ関数Gamma[z]は,積分 によって定義される. が正整数のとき,の関係が成り立つ. は階乗を一般化した関数としてとらえられ,変数 は複素数でもよい.
特に整数論の計算では,ガンマ関数に対する対数が現れることがある.引数が正の実数のとき,これは,単に,Log[Gamma[z]]とすることで評価することができる.しかし,引数が複素数のときは,不規則な不連続点が発生してしまう.このため,Wolframシステムには,LogGamma[z]と呼ばれる関数が特別に定義してある.同関数は,負の実軸に沿って分岐を持たせたガンマ関数の対数を与える.
オイラーのベータ関数Beta[a,b]は,関係式 で定義される.
ポッホハンマー(Pochhammer)の記号あるいは昇階乗Pochhammer[a,n]は,関係式で定義される.この関数は超幾何関数の級数展開でよく使われる.注意点として,定義式にあるガンマ関数が無限大になるときでも,ポッホハンマーの記号の値は確定する.
不完全ガンマ関数Gamma[a,z]は,積分 により定義される.Wolframシステムには一般化された不完全ガンマ関数Gamma[a,z0,z1]が組み込まれている.後者は積分 で定義される.
この定義から,不完全ガンマ関数 はWolframシステムではGamma[a,0,z]として求まることが分かる.
不完全ベータ関数Beta[z,a,b]は, で与えられる.不完全ベータ関数では,関数の第1引数であるパラメータ が積分の上限を特定していることに注意する.これに対して,不完全ガンマ関数では,関数の第2引数の が積分の下限を特定する.
不完全ベータ関数および不完全ガンマ関数はそのまま計算せずに,まず,正則化された形を求めた方が計算しやすくなることがある.ここで,正規形とは,完全ベータ関数(もしくは,完全ガンマ関数)で不完全形を割った形を意味する.不完全ベータ関数を正則化した関数としてBetaRegularized[z,a,b]が用意されている.この関数は,引数のほとんどの値域で の関係で定義され,特異点も扱うことができる.また,不完全ガンマ関数を正則化した関数GammaRegularized[a,z]の関係で定義され,特異点も扱うことができる.
不完全ベータ関数と不完全ガンマ関数,および,それらの逆関数は,統計でよく使われる.逆ベータ関数InverseBetaRegularized[s,a,b]は,における の解である.同様に,逆ガンマ関数InverseGammaRegularized[a,s]は,における の解である.
ガンマ関数の導関数が有理級数の和を求めるときによく使われる.ディガンマ関数PolyGamma[z]で与えられ,ガンマ関数の対数微分である.引数が整数のとき,ディガンマ関数は関係式 を満たす.ここで, はオイラー定数(WolframシステムではEulerGamma)を示し, は調和数を示す.
ポリガンマ関数PolyGamma[n,z]は,微分式 で与えられる.ディガンマ関数は, に対応している.また, がガンマ関数の 階の対数微分であり, 階ではないことに注意する.また,ポリガンマ関数は関係式 を満たす.PolyGamma[ν,z]は,任意の複素数 について分数計算の解析接続によって与えられる.
BarnesG[z]Gamma関数の一般化であり,その機能の同一性BarnesG[z+1]=Gamma[z] BarnesG[z]により定義される.一方,BarnesGの対数の第3導関数は正の z に対して正である.BarnesGは複素平面上の整関数である.
LogBarnesG[z]は,Exp[LogBarnesG[z]]=BarnesG[z]が成り立つような負の実数軸に沿って分枝切断を持つ正則関数である.
Hyperfactorial[n]は複素平面での の一般化である.
ガンマやポリガンマ関数の多くの厳密な値はWolframシステムに組込み済みである:
ガンマ関数の絶対値の等高線プロットを複素平面上に作成する:

ゼータ関数とこれに関連した関数

DirichletL[k,j,s]
ディリクレのL関数
LerchPhi[z,s,a]
レルヒの超越関数
PolyLog[n,z]
多重対数関数
PolyLog[n,p,z]
ニールセンの一般化された多重対数関数
RamanujanTau[n]
ラマヌジャンの 関数
RamanujanTauL[n]
ラマヌジャンの ディリクレL関数
RamanujanTauTheta[n]
ラマヌジャンの シータ関数
RamanujanTauZ[n]
ラマヌジャン Z関数
RiemannSiegelTheta[t]
マン・ジーゲル関数
RiemannSiegelZ[t]
マン・ジーゲル関数
StieltjesGamma[n]
スティルチェスの定数
Zeta[s]
リーマンのゼータ関数
Zeta[s,a]
一般化されたリーマンのゼータ関数
HurwitzZeta[s,a]
フルヴィッツのゼータ関数
HurwitzLerchPhi[z,s,a]
フルヴィッツ・レルヒの超越関数
ゼータ関数とこれに関連した関数
ディリクレの L 関数DirichletL[k,j,s]のとき)として実装され,は法が で指標が のディリクレ記号である.
リーマンのゼータ関数Zeta[s]は,のとき関係式 で定義される.整数を引数とするゼータ関数は,各種の総和や積分で使われる.整数を引数とするゼータ関数であれば(一部例外はあるが),厳密な値をWolframシステムで取得することができる.
は,任意複素数 について解析的接続を持つ.複素数のゼータ関数は,整数論における素数分布の問題で中心的な役割を果たす.臨界線上の値は特に重要とされる.
を解析していく上で,2つのリーマン・ジーゲル(RiemannSiegel)関数RiemannSiegelZ[t]およびRiemannSiegelTheta[t]を定義するとよい.それぞれ, が実数のとき およびで定義される. が実数なら,両関数はともに実数値になることに注意する.
スティルチェス(Stieltjes)の定数StieltjesGamma[n]は,オイラーの定数を一般化したもので, を極 の周りで級数展開したときの係数として現れる. の係数が で,オイラーの定数は である.
一般化されたリーマンのゼータ関数Zeta[s,a]は,の項を除いて として実装されている.
フルヴィッツのゼータ関数HurwitzZeta[s,a] として実装される.
ラマヌジャンの ディリクレL関数RamanujanTauL[s]L(s)の場合)で定義され,係数RamanujanTau[n]を持つ.リーマンゼータ関数の場合と同様に,関数RamanujanTauZ[t]RamanujanTauTheta[t]を定義すると便利である.
以下は の数値近似である:
これはディリクレのL関数の実部の三次元プロットである:
の値はWolframシステムで厳密に得られる:
複素平面におけるリーマンのゼータ関数の絶対値を3Dでプロットする:
次に,臨界線上のリーマンのゼータ関数の絶対値をプロットする.最初のいくつかの関数のゼロ点を観測することができる:
臨界線上のラマヌジャン L関数の絶対値のプロットである.
多重対数関数PolyLog[n,z] で与えられる.多重対数関数はジョンキエール(Jonquière)の関数とも呼ばれる.二重対数PolyLog[2,z] を満足する. はスペンス(Spence)の積分としても知られている.ニールセンの一般化された多重対数関数あるいは超対数PolyLog[n,p,z] で与えられる.多重対数関数は素粒子論でのファインマン図形の積分および代数的K理論に現れる.
レルヒ(Lerch)の超越関数LerchPhi[z,s,a]は,ゼータ関数および多重対数関数を一般化したもので,の項を除いた関係式で与えられる.負ベキ乗の和の多くがレルヒの超越関数を使って表せる.例えば,カタランのベータ関数 により求めることができる.
レルヒの超越関数は,統計力学におけるフェルミ・ディラック(FermiDirac)分布に の関係式で関連している.
また,レルヒの超越関数は,整数論に現れるディリクレの L 級数(Dirichlet Lseries )の評価にも使われる.基本 L 級数は の形を持つ.ここで,「指標」 は整数関数で周期 を持つ.この種の L 級数は, のベキとおき,レルヒの超越関数の和として書くことができる.
LerchPhi[z,s,a,DoublyInfinite->True]は,二重無限和を与える.
フルヴィッツレルヒ(HurwitzLerch)の超越関数HurwitzLerchPhi[z,s,a]HurwitzZeta[s,a]を一般化したもので, により定義される.
ZetaZero[k]
臨界線上のゼータ関数 番目の零点
ZetaZero[k,x0]
高さ より高い 番目の零点
ゼータ関数の零点
ZetaZero[1] の最初の自明でない零点を表す:
数値を返す:
次は高さが15より大きい最初の零点を返す:

指数積分とこれに関連した関数

CosIntegral[z]
余弦積分関数
CoshIntegral[z]
双曲線余弦積分関数
ExpIntegralE[n,z]
指数積分 En(z)
ExpIntegralEi[z]
指数積分
LogIntegral[z]
対数積分
SinIntegral[z]
正弦積分関数
SinhIntegral[z]
双曲線正弦積分関数
指数積分とこれに関連した関数
Wolframシステムは,ExpIntegralEおよびExpIntegralEiの2つの形の指数積分を備えている.
指数積分関数ExpIntegralE[n,z]は, で定義される.
第2の指数積分関数ExpIntegralEi[z]は,のとき積分 で定義される.ここで,積分の主値が取られる.
対数積分関数LogIntegral[z]は,のとき, で与えられ,ここで積分の主値が取られる.整数論において は素数の分布解析で中心的な役割を果たす.対数積分関数は, とも表記される.整数論の応用の中には,主値を取らず, と定義されるものもある.これは,Wolframシステムで定義される とは定数の分だけ違う.
正弦と余弦の積分関数SinIntegral[z]CosIntegral[z]は, で定義される.双曲線正弦と双曲線余弦の積分関数SinhIntegral[z]CoshIntegral[z] で定義される.

誤差関数とこれに関連した関数

Erf[z]
誤差関数
Erf[z0,z1]
一般化された誤差関数
Erfc[z]
相補誤差関数
Erfi[z]
虚部誤差関数
FresnelC[z]
フレネルのC積分 C(z)
FresnelS[z]
フレネルのS積分
InverseErf[s]
逆誤差関数
InverseErfc[s]
逆相補誤差関数
誤差関数とこれに関連した関数
誤差関数Erf[z]は,ガウス分布(正規分布)の密度関数を積分した で与えられる.相補誤差関数Erfc[z]は,で与えられる.虚部誤差関数Erfi[z]は, で与えられる.一般化された誤差関数Erf[z0,z1]は,積分 で定義される.誤差関数は統計の計算で中心的な役割を果たしている.
逆誤差関数InverseErf[s]は,の方程式における解 で定義される.逆誤差関数は統計学における信頼区間の解析や,ガウス数を生成するための乱数生成アルゴリズムにおいて使われる.
誤差関数に深く関係を持つものに,フレネル(Fresnel)の積分FresnelC[z]およびFresnelS[z]がある.前者は, により,また後者は, により定義される.フレネルの積分は回折論の問題で使われる.

ベッセル関数とこれに関連した関数

AiryAi[z]
および
AiryBi[z]
エアリー関数 および
AiryAiPrime[z]
および
AiryBiPrime[z]
エアリー関数の導関数 および
BesselJ[n,z]
および
BesselY[n,z]
ベッセル関数 および
BesselI[n,z]
および
BesselK[n,z]
変形ベッセル関数 および
KelvinBer[n,z]
および
KelvinBei[n,z]
ケルビン関数 および
KelvinKer[n,z]
および
KelvinKei[n,z]
ケルビン関数 および
HankelH1[n,z]
および
HankelH2[n,z]
ハンケル関数 および
SphericalBesselJ[n,z]
および
SphericalBesselY[n,z]
球ベッセル関数 および
SphericalHankelH1[n,z]
および
SphericalHankelH2[n,z]
球ハンケル関数 および
StruveH[n,z]
および
StruveL[n,z]
シュトルーベ関数 および変形シュトルーベ関数
ベッセル関数とこれに関連した関数
ベッセル(Bessel)関数BesselJ[n,z]およびBesselY[n,z]は,微分方程式 の線形独立な解である.整数 について において正則になる一方,において対数発散する.
ベッセル関数は,円柱対称系における微分方程式を解くために使われる.
第一種ベッセル関数 は単にベッセル関数とも呼ばれる.第二種ベッセル関数 はウェーバー(Weber)関数とも,ノイマン(Neumann)関数とも呼ばれる.後者の場合, と特別に記される.
ハンケル(Hankel)関数,または,第三種ベッセル関数HankelH1[n,z]およびHankelH2[n,z]は,によって関連しているベッセル微分方程式の一組の代替解を与える.
球ベッセル関数SphericalBesselJ[n,z]SphericalBesselY[n,z]は,球ハンケル関数SphericalHankelH1[n,z]およびSphericalHankelH2[n,z]と同様に,球対称の波現象の研究から生じたものである.これらは によって,通常の関数と関連している.ハンケル関数の種類によって,関係式の が,それぞれ,,または, に置き換えられる.整数 については,特殊ベッセル関数をFunctionExpandを使って初等関数について展開することができる.
変形ベッセル関数BesselI[n,z]およびBesselK[n,z]は,微分方程式 の解である.整数 について,は正則になる一方,で対数発散してしまう.は双曲ベッセル関数としても知 られる.
特に,電子工学において,ケルビン(Kelvin)関数と呼ばれるKelvinBer[n,z]KelvinBei[n,z]KelvinKer[n,z]KelvinKei[n,z]がよく定義される.これらは通常のベッセル関数とおよびによって関連している.
エアリー(Airy)関数AiryAi[z]およびAiryBi[z]は,微分方程式 の2つの線形独立な解およびである. が正で増大するときは0に収束するが,は限りなく増大する.エアリー関数は,整数の1/3の次数を持つ変形ベッセル関数に関連している.エアリー関数とその導関数AiryAiPrime[z]およびAiryBiPrime[z]は,電磁理論や量子力学の境界値問題によく見られる.
シュトルーベ(Struve)関数StruveH[n,z]は整数 に対して の形式の非斉次ベッセル方程式の解に現れる.この方程式の一般解はシュトルーベ関数が加えられたベッセル関数の線形結合からなる.変形シュトルーベ関数StruveL[n,z]は通常のシュトルーベ関数から,の形式で与えられる.シュトルーベ関数は電磁理論でよく用いられる.
をプロットする.理想的な鎖の一端を固定しもう一端を揺すったときに,鎖はこの曲線の形を取る:
次数を半整数とするベッセル関数に対応する明示的な代数式が生成される:
ここでプロットするエアリー関数は,左から右へと増大するポテンシャルに置かれた粒子が持つ量子力学的な振幅を与える.古典的には侵入不能な右側の領域において振幅が指数的に減衰する様子がうかがえる:
BesselJZero[n,k]
ベッセル関数 番目の零点
BesselJZero[n,k,x0]
より大きい 番目の零点
BesselYZero[n,k]
ベッセル関数 番目の零点
BesselYZero[n,k,x0]
より大きい 番目の零点
AiryAiZero[k]
エアリー関数 番目の零点
AiryAiZero[k,x0]
より小さい 番目の零点
AiryBiZero[k]
エアリー関数 番目の零点
AiryBiZero[k,x0]
より小さい 番目の零点
ベッセル関数,エアリー関数の零点
BesselJZero[1,5]の5番目の零点を表す:
以下は,上記の数値を与える:

ルジャンドル関数とこれに関連した関数

LegendreP[n,z]
第一種ルジャンドル関数
LegendreP[n,m,z]
第一種ルジャンドル陪関数
LegendreQ[n,z]
第二種ルジャンドル関数
LegendreQ[n,m,z]
第二種ルジャンドル陪関数
ルジャンドル関数とこれに関連した関数
ルジャンドル関数およびルジャンドル陪関数は,微分方程式を満たす.第一種ルジャンドル関数LegendreP[n,z]およびLegendreP[n,m,z]は, および が整数のとき,ルジャンドルの多項式に還元する.第二種ルジャンドル関数LegendreQ[n,z]およびLegendreQ[n,m,z]は,この微分方程式の別な線形独立な解を与える.整数 の場合,これらは,において対数的特異点を持つ.および は,のときのこの微分方程式の解である.
ルジャンドル関数は,量子力学での散乱過程の解析に使われる.
LegendreP[n,m,z]
または
LegendreP[n,m,1,z]
を含むタイプ1の関数
LegendreP[n,m,2,z]
を含むタイプ2の関数
LegendreP[n,m,3,z]
を含むタイプ3の関数
ルジャンドル関数のタイプ(LegendreQも同様なタイプに区分することができる)
タイプ1のルジャンドル関数とタイプ2のルジャンドル関数は,記号形は異なるが,同じ値を持つ.さらに,単位円の外でも定義される.タイプ2の関数はからと,からで分岐を持つ.タイプ3のルジャンドル関数は,からだけで分岐を持つ.タイプ3は と記述される場合もある.
円環関数,トロイド関数またはリング関数は,円環体対称を持つ系の問題で使われる.これらは,ルジャンドル関数を用いて で表される.
円錐関数は で表される.
を整数としたとき関数LegendreP[n,x]はルジャンドルの多項式に等しい.一方, を任意の複素数としたときは,一般に,ルジャンドル関数になる.
同様に,任意の複素数の添数を持つとき,関数GegenbauerC等は,ゲーゲンバウアの関数,チェビシェフの関数,エルミートの関数,ヤコビの関数,そして,ラゲールの関数を与える.ルジャンドルの陪関数と違い,これらの関数において型の区別はされない.

超幾何関数と一般化

Hypergeometric0F1[a,z]
超幾何関数
Hypergeometric0F1Regularized[a,z]
正規化された超幾何関数
Hypergeometric1F1[a,b,z]
クンマーの合流型超幾何関数
Hypergeometric1F1Regularized[a,b,z]
正規化された合流型超幾何関数
HypergeometricU[a,b,z]
合流型超幾何関数
WhittakerM[k,m,z]
および
WhittakerW[k,m,z]
ホイッタカー関数 および
ParabolicCylinderD[ν,z]
放物柱関数
CoulombF[l,η,ρ]
正則クーロン波動関数
CoulombG[l,η,ρ]
非正則クーロン波動関数
合流型超幾何関数と関連関数
ここまでに説明してきた特殊関数の多くは,合流型超幾何関数Hypergeometric1F1[a,b,z]の特殊形と見ることができる.
合流型超幾何関数は,級数展開から求めることができる. が共に整数のときは特殊な結果が得られる.で,かつ,もしくは のとき,この級数は,有限項からなる多項式になる.
が負の整数か0のとき,は無限大になる.それでも,で与えられる正規化された合流型超幾何関数Hypergeometric1F1Regularized[a,b,z]は,すべての場合において確定値を持つ.
から求まる関数には,ベッセル関数,誤差関数,不完全ガンマ関数,エルミートの関数,そして,ラゲールの関数がある.
関数は,あるいは と表記されることもある.また,クンマー(Kummer)の関数と呼ばれることもある.
関数を積分 として書くこともできる.
合流型超幾何関数は,境界条件が,および, のとき,クンマーの微分方程式 の解になる.
関数HypergeometricU[a,b,z]は,クンマーの方程式の別な線形独立な解である.ならばこの関数は十分に小さい について のように振る舞う.また,複素平面 の負の実軸に沿って分岐を持つ.
関数 は,積分 で表せる.
も,と同様にクンマーの関数として知られる. 関数は文献によってはと表記される.
ホイッタカー(Whittaker)の関数WhittakerM[k,m,z]WhittakerW[k,m,z] は,ホイッタカーの微分方程式として知られるクンマー微分方程式に解のペアを与える.ホイッタカーの関数 は,の関係式でに関連している.第二種のホイッタカーの関数 も, に置き換えると,同じ関係に従う.
放物柱関数ParabolicCylinderD[ν,z]は,の関係式でエルミートの関数に関連している.
クーロン(Coulomb)波動関数CoulombF[l,η,ρ]およびCoulombG[l,η,ρ]もまた,合流型超幾何関数の特殊な形のひとつである.クーロン波動関数は,点状核のクーロンポテンシャルにおける放射型シュレーディンガー(Schrödinger)方程式の解を与える.正則なクーロン波動関数は,で与えられる.ただし,とする.非正則クーロンは導関数 も同様な式で与えられるが,の代りに が使われる.
送信および受信の非正則クーロン波動関数CoulombH1[l,η,ρ]およびCoulombH2[l,η,ρ]に従って関連付けられた正則および非正則クーロンは導関数の線形結合である.
この他に合流型超幾何関数の特殊形としてトロント(Toronto)の関数 ,ポアソン・シャリェー(PoissonCharlier)の多項式 ,カニンガム(Cunningham)の関数 ,そしてベーテマン(Bateman)の関数 がある.
関数Hypergeometric0F1[a,z]は,の関係式で合流型超幾何関数の極限を取ることで得られる.
関数は,と級数展開でき,微分方程式 を満たす.
第一種ベッセル関数は関数で表すことができる.
Hypergeometric2F1[a,b,c,z]
超幾何関数
Hypergeometric2F1Regularized[a,b,c,z]
正規化された超幾何関数
HypergeometricPFQ[{a1,,ap},{b1,,bq},z]
一般化された超幾何関数
HypergeometricPFQRegularized[{a1,,ap},{b1,,bq},z]
正規化され,一般化された超幾何関数
MeijerG[{{a1,,an},{an+1,,ap}},{{b1,,bm},{bm+1,,bq}},z]
マイヤーのG関数
AppellF1[a,b1,b2,c,x,y]
2変数のアッペル超幾何関数
超幾何関数と一般化
超幾何関数Hypergeometric2F1[a,b,c,z]は,の級数展開を持つ.この関数は,超幾何微分方程式 の解である.
また,超幾何関数は, の積分としても書くことができる.
超幾何関数は とも表記され,ガウス級数または,クンマー級数とも呼ばれる.
ルジャンドル関数,および他の直交多項式を一般化した関数はすべて,超幾何関数で表すことができる.また,楕円積分のすべてを関数で表すことも可能である.
リーマンの微分方程式の解であるリーマンP関数も,関数のひとつである.
一般化された超幾何関数またはバルネス(Barnes)の拡張超幾何関数HypergeometricPFQ[{a1,,ap},{b1,,bq},z] と級数展開できる.
マイヤー(Meijer)のG関数MeijerG[{{a1,,an},{an+1,,ap}},{{b1,,bm},{bm+1,,bq}},z]は線積分表現 で与えられる.積分路はの極との極の間にあるものとする.マイヤーのG関数MeijerG は非常に一般化された関数であり,これまでの数節で説明してきたほとんどの関数はマイヤーのG関数の特殊形として作ることができる.
2変数のアッぺル(Appell)の超幾何関数AppellF1[a,b1,b2,c,x,y] と級数展開できる.この関数は例えば三次の多項式の任意のベキの積分に現れる.

q 級数関数とこれに関連した関数

QPochhammer[z,q]
ポッホハンマー(Pochhammer)記号
QPochhammer[z,q,n]
ポッホハンマー(Pochhammer)記号
QFactorial[z,q]
階乗
QBinomial[n,m,q]
二項係数
QGamma[z,q]
オイラーガンマ関数の 形式
QPolyGamma[z,q]
ディガンマ関数
QPolyGamma[n,z,q]
ディガンマ関数の 次導関数
QHypergeometricPFQ[{a1,,ap},{b1,,bq},q,z]
基本的な超幾何級数
級数とこれに関連した関数
ポッホハンマー記号は 差分の微積分における自然オブジェクトであり,微積分学におけるベキ関数や有限差分の微積分における下降階乗と同じ役割を果たす.
有限の ポッホハンマー記号 は,積で定義される.<1のとき,極限 により ポッホハンマー記号 が定義される. ポッホハンマー記号 は,極限/(1-q)n において回復するポッホハンマー記号 形式である.
階乗 /(1-q)z として定義され,となるに従って回復する階乗関数の 形式である. 階乗関数と ガンマ関数の関係は,階乗関数とオイラーガンマ関数の関係z!と同じ関数形式を持つ.
ディガンマ関数は, ガンマ関数 の対数導関数として定義される.次数 ポリガンマ関数 は, ディガンマ関数の についての 次導関数として定義される.
基本的な超幾何級数は,一般化された超幾何級数の 形式である.これはガウスの超幾何級数の 形式としてハイネ(Heine)により導入され,組合せ論で発生するものである.

乗積対数関数

ProductLog[z]
乗積対数関数
乗積対数関数
乗積対数関数は,方程式 における についての解を与える.この関数は対数を一般化したものとみなせる.各種の超越方程式の解を表すために使うことができる.明確な分岐の数を数える関数は乗積対数と の関係にある.

回転楕円体関数

SpheroidalS1[n,m,γ,z]
および
SpheroidalS2[n,m,γ,z]
放射状回転楕円体関数 および
SpheroidalS1Prime[n,m,γ,z]
および
SpheroidalS2Prime[n,m,γ,z]
放射状回転楕円体関数の z 次導関数
SpheroidalPS[n,m,γ,z]
および
SpheroidalQS[n,m,γ,z]
回転楕円体角度関数 および
SpheroidalPSPrime[n,m,γ,z]
および
SpheroidalQSPrime[n,m,γ,z]
回転楕円体角度関数の z 次導関数
SpheroidalEigenvalue[n,m,γ]
次数 n で位数 m の回転楕円体固有値
回転楕円体関数
放射状回転楕円体関数のSpheroidalS1[n,m,γ,z]SpheroidalS2[n,m,γ,z],それに角回転楕円体関数のSpheroidalPS[n,m,γ,z]SpheroidalQS[n,m,γ,z]は,球状領域における波動方程式の解に見られるものである.どちらの型の関数も,方程式の解となる.この方程式は, が,SpheroidalEigenvalue[n,m,γ]によって与えられる回転楕円体固有値の場合にのみ,正規化可能な解を持つ.回転楕円体関数は,フーリエ(Fourier)変換の有限な相似形の固有関数としても現われる.
SpheroidalS1SpheroidalS2は,事実上,球状ベッセル(Bessel)関数 の回転楕円体の相似形であるのに対し,SpheroidalPSSpheroidalQSはルジャンドル(Legendre)関数 の回転楕円体の相似形である.のときは扁長な回転楕円体関数となり,のときは偏球の回転楕円体関数となる.
関数
γ
z
範囲
名前
扁長楕円体角度
放射状扁長楕円体
偏楕円体角度
放射状偏楕円体
諸文献では回転楕円体関数のさまざまな正規化が使われている.WolframシステムではMeixner-Schäfkeスキームが使われている.
角回転楕円体関数はルジャンドル(Legendre)関数の変形と見ることができる:
次は,さまざまな長球形パラメータについて角回転楕円体関数をプロットする:
の整数についての角楕円体回転関数 は,帯域が限定されたフーリエ(Fourier)変換の固有関数である:
マシュー関数は,回転楕円体関数の特殊形である.
の角回転楕円関数はマシューの角関数を与える:
楕円積分と楕円関数
楕円積分や楕円関数を使うときは,特殊関数の場合以上に引数の指定には注意を要する.これらの関数の記述や使い方に関しては,相違した規約がしばしば使われる.その多くは,引数の呼び方において違いがあったり,引数と引数の間に入れる区切り記号としてコンマ以外の記号が使われたりする.
振幅 (Wolfram言語で用いられる,ラジアンで指定)
引数 (Wolfram言語で用いられる):で振幅に関連する
デルタ振幅
座標
特性 (第三種楕円積分においてWolfram言語で用いられる)
パラメータ (Wolfram言語で用いられる):のように垂直バー()に続く
補パラメータ
母数(Modulus) ; のようにコンマに続く
モジュラ角 ; のようにバックスラッシュ()に続く
ノーム 関数でコンマに続く;
不変数 (Wolfram言語で用いられる)
半周期 ,ここで
周期の比
判別式
曲線のパラメータ (Wolfram言語で用いられる)
座標 (Wolfram言語で用いられる): と関連している
楕円積分と楕円関数の共通的な引数に関する規約
JacobiAmplitude[u,m]
引数 u とパラメータ m に対応した振幅 ϕ を返す
EllipticNomeQ[m]
パラメータ m に対応したノーム q を返す
InverseEllipticNomeQ[q]
ノーム q に対応したパラメータ m を返す
WeierstrassInvariants[{ω,ω}]
半周期{ω,ω}に対応した不変数{g2,g3}を返す
WeierstrassHalfPeriods[{g2,g3}]
不変数{g2,g3}に対応した半周期{ω,ω}を返す
異なった引数規約の間における変換

楕円積分

EllipticK[m]
第一種完全楕円積分
EllipticF[ϕ,m]
第一種楕円積分
EllipticE[m]
第二種完全楕円積分 E(m)
EllipticE[ϕ,m]
第二種楕円積分 E(ϕm)
EllipticPi[n,m]
第三種完全楕円積分
EllipticPi[n,ϕ,m]
第三種楕円積分
JacobiZeta[ϕ,m]
ヤコビのゼータ関数
楕円積分
を有理関数, の三次または四次の多項式とするとき, で表される積分を楕円積分と呼ぶ.あらゆる楕円積分は,3種類あるルジャンドルヤコビの楕円積分で表すことができる.
第一種楕円積分EllipticF[ϕ,m]は,において で与えられる.この楕円積分は,単振子の運動状態を表した方程式の解法に使われる.また,第一種の不完全楕円積分としても知られる.
文献によっては,Wolfram言語で使われる引数の順序とは逆の順序で引数が与えられることがあるので注意する.
第一種完全楕円積分EllipticK[m] は,で与えられる.ここで, は第一種完全楕円積分を表し, は不完全楕円積分を表すことに注目されたい.実際の用途では, が省略れ, は単に と記述されることがよくある.補第一種完全楕円積分 は, で与えられる.この積分はしばしば とも表記される. は,対応するヤコビの楕円積分(「楕円関数」を参照)の「実部」と「虚部」の各々からなる四分の一周期を与える.
第二種楕円積分EllipticE[ϕ,m] は,の範囲において, で与えられる.
第二種完全楕円積分EllipticE[m] は, で与えられ, とも表記される.この補形は となる.
ヤコビのゼータ関数JacobiZeta[ϕ,m] は,で与えられる.
ホイマン(Heuman)のラムダ関数は,で与えられる.
第三種楕円積分EllipticPi[n,ϕ,m] は, で与えられる.
第三種完全楕円積分EllipticPi[n,m] は,で与えられる.
第二種完全楕円積分 をプロットする:
を計算する:
プロットすると,楕円積分が複素平面上で複雑な構造を持つことが分かる:

楕円関数

JacobiAmplitude[u,m]
振幅関数
JacobiSN[u,m]
JacobiCN[u,m]
ヤコビの楕円関数
InverseJacobiSN[v,m]
InverseJacobiCN[v,m]
逆ヤコビの楕円関数
EllipticTheta[a,u,q]
楕円シータ関数 (, , )
EllipticThetaPrime[a,u,q]
楕円シータ導関数 (, , )
SiegelTheta[τ,s]
シーゲルのシータ関数
SiegelTheta[v,τ,s]
シーゲルのシータ関数
WeierstrassP[u,{g2,g3}]
ワイエルシュトラスの楕円関数
WeierstrassPPrime[u,{g2,g3}]
ワイエルシュトラスの楕円導関数
InverseWeierstrassP[p,{g2,g3}]
逆ワイエルシュトラスの楕円関数
WeierstrassSigma[u,{g2,g3}]
ワイエルシュトラスのシグマ関数
WeierstrassZeta[u,{g2,g3}]
ワイエルシュトラスのゼータ関数
楕円関数とこれに関連した関数
二次形式の平方根を含む有理関数は,逆三角関数を使って積分することができる.このため,三角関数をこれらの積分で得られる関数の逆として定義することもできる.
類推から,楕円関数は楕円積分で得られる関数の逆として定義することができる.
ヤコビの楕円関数の振幅JacobiAmplitude[u,m] は,第一種楕円積分の逆関数である.ならば,と書ける.ヤコビの楕円関数を用いるとき,しばしば が省略され, と書かれる.
ヤコビの楕円関数JacobiSN[u,m] およびJacobiCN[u,m] は,それぞれおよびで与えられる.ただし,とする.また,JacobiDN[u,m]は,で与えられる.
ヤコビの楕円関数JacobiPQ[u,m] は全部で12種類存在する.それらは,PQSCDNから組み合せることで作れる.それぞれのヤコビの楕円関数JacobiPQ[u,m] は,を満足する.ただし,この式ではとする.
三角関数の間にはさまざまな関係式があるが,それに似た関係がヤコビの楕円関数の間にも数多くある.ヤコビの楕円関数は,極限を取ったとき,三角関数に還元する.このため,というような関係が成り立つ.
の記述が積分 を表すのに使われることがある.「楕円積分」で定義したヤコビのゼータ関数を使って表せる.
楕円関数の重要な特性のひとつとして,引数の複素数値について二重の周期性を持つことが挙げられる.通常の三角関数は単一な周期性を持つ.つまり,任意の整数 について の周期性を持つ.これに対して,楕円関数は二重周期性を持つ.つまり,の周期性が の任意の整数の対について成り立つ.
のようなヤコビの楕円関数は,複素 平面上で二重の周期性を持つ.周期には が含まれる.ここで, は第一種完全楕円積分を表す.
ヤコビの楕円関数の記述 において「p」と「q」のどちらを選択するかは,四分の一周期の点で得られる の関数値から判明する.
ヤコビの楕円関数の絶対値が2つの方向に沿って基本周期を持つのがグラフから分かる:
Wolfram言語には,逆ヤコビの楕円関数であるInverseJacobiSN[v,m]InverseJacobiCN[v,m]等も組み込まれている.例えば,逆関数の1つ,は,が成り立つための の値を与える.逆ヤコビの楕円関数は楕円積分に関連している.
4種類の楕円シータ関数 は,a123または4としてEllipticTheta[a,u,q] から作ることができる.これらの関数は,で定義される.シータ関数はパラメータ を明示しないで と書かれることもある.シータ関数は, と書かれることもあるが,その場合に という式で関係付けられている.また,で与えられる に置き換えられることもある.これらすべてのシータ関数は拡散方程式 を満たす.
次元 p,ベクトル s のリーマンの正方モジュラ行列 を持つシーゲルのシータ関数SiegelTheta[τ,s]は,複素次元 p までの楕円シータ関数を生成する.これはで定義され,n はすべての p 次元整数ベクトル上を動く.特性関数SiegelTheta[ν,τ,s] を持つシーゲルのシータ関数は,で定義され,特性 ν は1対の p 次元ベクトル{α,β} を表す.
ヤコビの楕円関数はシータ関数の比としても表すことができる.
この他,シータ関数の表記には,がある.ただし,とする.
ネビル(Neville)のシータ関数は,先のシータ関数を使って, と定義できる.ここで, とする.ヤコビの楕円関数はネビルのシータ関数の比として表すことができる.
ワイエルシュトラス(Weierstrass)の楕円関数WeierstrassP[u,{g2,g3}] は,楕円積分の逆関数と見ることができる.ワイエルシュトラスの関数 は, を満たす の値を与える.関数WeierstrassPPrime[u,{g2,g3}]は,で与えられる.
ワイエルシュトラスの関数は,基本半周期 を用いて書かれることもあり,この WeierstrassHalfPeriods[{u,{g2,g3}]を使い不変数 から求まる.
逆ワイエルシュトラスの楕円関数InverseWeierstrassP[p,{g2,g3}]は,とする の2つの値の1つを返す.この値は複素半周期 によって定義される平行四辺形内にある.
逆ワイエルシュトラスの楕円関数InverseWeierstrassP[{p,q},{g2,g3}]は,および となる の一意的な値を返す. にそのような値が存在するには,の関係式を満たす必要がある.
ワイエルシュトラスのゼータ関数WeierstrassZeta[u,{g2,g3}] とワイエルシュトラスのシグマ関数WeierstrassSigma[u,{g2,g3}]は,ワイエルシュトラスの楕円関数に各々,の関係式で関連している.
ワイエルシュトラスのゼータ関数とワイエルシュトラスのシグマ関数は周期性を持たないため,厳密には楕円関数ではない.

楕円モジュラ関数

DedekindEta[τ]
デデキントのイータ関数
KleinInvariantJ[τ]
クラインの不変モジュラ関数
ModularLambda[τ]
モジュラ・ラムダ関数
楕円モジュラ関数
モジュラ・ラムダ関数ModularLambda[τ] は, で与えられる半周期の比とパラメータを の関係式で関連付ける.
クライン(Klein)の不変モジュラ関数KleinInvariantJ[τ] とデデキント(Dedekind)のイータ関数DedekindEta[τ] は, の関係式を満たす.
楕円モジュラ関数は,引数の特定な一次分数変換において不変になるように定義されている.このため,例えば, の変換操作をどう組み合せて行ったとしても は不変である.

一般化された楕円積分と楕円関数

ArithmeticGeometricMean[a,b]
の算術幾何平均
EllipticExp[u,{a,b}]
楕円曲線 に随伴した一般化された指数
EllipticLog[{x,y},{a,b}]
楕円曲線 に随伴した一般化された対数
一般化された楕円積分と楕円関数
ここまで述べた楕円積分や関数の定義は伝統的な使い方に基づいている.現代の代数幾何学では,もう少し一般化された定義の方が都合がよい.
関数EllipticLog[{x,y},{a,b}]は,積分 の値として定義される.ただし,平方根の符号は とする を与えることで指定する. の形の積分は,常用対数(および,逆三角関数)を用いて表せる.平方根でくくられた多項式を三次にして,これを一般化したのがEllipticLogと考えるとよい.
EllipticExp[u,{a,b}]EllipticLogの逆関数である.この関数はEllipticLogに引数としてある のリストを返す.EllipticExpは楕円関数で,複素 平面上で二重周期を持つ.
ArithmeticGeometricMean[a,b]は,2個の数 の算術幾何平均(AGM)を返す.この量は,楕円積分や他の関数を計算する数値アルゴリズムにおいて中心的な役割を果たす. を初期値として,必要な精度の下で となるまで変換 を繰り返すことで,AGMが求まる.
マシューの関数とこれに関連した関数
MathieuC[a,q,z]
特性値 a とパラメータ q を持つマシューの偶関数
MathieuS[b,q,z]
特性値 b とパラメータ q を持つマシューの奇関数
MathieuCPrime[a,q,z]
および
MathieuSPrime[b,q,z]
マシューの関数の z による導関数
MathieuCharacteristicA[r,q]
特性指数 r とパラメータ q を持つマシューの偶関数のための特性値 ar
MathieuCharacteristicB[r,q]
特性指数 r とパラメータ q を持つマシューの偶関数のための特性値 br
MathieuCharacteristicExponent[a,q]
特性値 a とパラメータ q を持つマシューの奇関数のための特性指数 r
マシューの関数とこれに関連した関数
マシュー(Mathieu)の関数MathieuC[a,q,z]MathieuS[a,q,z]は,方程式 の解である.この方程式は楕円形や周期性ポテンシャルにかかわった多くの物理問題で見られる.関数MathieuC について偶となるよう定義され,MathieuSは奇となるよう定義される.
のとき,マシューの関数は単なるになる. がゼロ以外の値を取るとき, が特定の値を取るときに限り同関数は について周期性を持つ.そのような特定の値をマシューの特性値と呼び,MathieuCharacteristicA[r,q]またはMathieuCharacteristicB[r,q]により得ることができる.ここで は整数か有理数とする.特性値は ,または, とも記述される.
が整数のとき,マシューの偶関数と奇関数の取る特性値 は,各々,とも記述される.ここで,引数 の並び順が逆になることに注意する.
フロケ(Floquet)の定理によると,任意のマシューの関数を の形で書くことができる.ここで,は周期 を持ち, はマシューの特性指数MathieuCharacteristicExponent[a,q]である.したがって,特性指数 が整数,または,有理数を取るとき,マシューの関数は周期性を持つ.ただし,一般に, が実整数でないとき は等しい.
このグラフは,最初の5つの特性値 の関数として示す:
特殊関数の取扱い方
自動評価
特定の引数に対し厳密な結果を返す
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システムでは,この種の簡約化は自動的に行われる.
数学で標準的な定数を使い書き直してくれる:
エアリー(Airy)関数の特別な場合を,ガンマ関数を使った式に約してくれる:
ほとんどの引数では特殊関数を厳密に簡約することは不可能である.そのようなときでも,Wolframシステムの数値近似機能を使い必要な精度で特殊関数の近似値を得ることはできる.Wolframシステムに組み込まれているアルゴリズムは,特殊関数を定義するパラメータが基本的にどんな値を取ろうが対応できるようになっている.パラメータが実数であっても,複素数であっても対応可能である.
既知でないため,結果を厳密な形で得ることができない:
それでも,数値計算による近似はできる.結果を40桁精度で近似させる:
非常に大きな複素数になるが,それでもWolframシステムは見付けることができる:
ほとんどの特殊関数では,その導関数を初等関数や別の特殊関数で表すことが可能である.そうすることが不可能なときでも,Nを適用することで数値近似的な導関数の値を求めることは可能である.
導関数が初等関数で表される:
3におけるガンマ関数の導関数を求める:
ゼータ関数の導関数を厳密に表せる式は存在しない:
それでも,Nを使えば近似値を得ることができる:
Wolframシステムには特殊関数に関する知識が大量に集約されている.基本的には過去に導出された,特殊関数に関するすべての研究結果が入っている.Wolframシステムで特殊関数を使うたびに,ユーザはこの知識にアクセスしていることになる.
フレネルの関数を級数展開する:
Wolframシステムは,特殊関数を含む非常に多種の積分を行うことができる:
特殊関数を扱う上で特徴的なことのひとつに,異なる特殊関数の間に非常に多くの関係式の成り立つことが挙げられる.また,これらの関係式を使うことで式を簡約することができる.
FullSimplify[expr]
各種変換規則を使い式 expr を簡約する
特殊関数を含む式の簡約化
ガンマ関数に対して反射公式が使われる:
チェビシェフの関数を表した式が使われて簡約化が進められる:
エアリー関数はベッセル関数に関連している:
FunctionExpand[expr]
特殊関数の展開形を求める
特殊関数を含む式の変形操作
以下はガウスの超幾何関数をより簡単な関数に展開する:
これは,ベッセル関数を使った例である:
ここでは,PolyGammaを使わなくても最終式が求まる:
これはフルヴィッツ(Hurwitz)のゼータ関数の二次導関数の式を求める: