Wikibooks
jawikibooks
https://ja.wikibooks.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
MediaWiki 1.47.0-wmf.12
first-letter
メディア
特別
トーク
利用者
利用者・トーク
Wikibooks
Wikibooks・トーク
ファイル
ファイル・トーク
MediaWiki
MediaWiki・トーク
テンプレート
テンプレート・トーク
ヘルプ
ヘルプ・トーク
カテゴリ
カテゴリ・トーク
Transwiki
Transwiki‐ノート
TimedText
TimedText talk
モジュール
モジュール・トーク
Event
Event talk
電磁気学/静磁場
0
2613
301865
301839
2026-07-26T07:52:49Z
Nermer314
62933
301865
wikitext
text/x-wiki
{{Pathnav|物理学|電磁気学|frame=1|small=1}}
== 静磁場 ==
=== 磁気的な力の導入 ===
次に場の量に対する時間変化が無いときの、磁場の様子を見ることにする。
ここでいう磁場というものは先ほどの電場との類似で導入されるものだが、その性質は電場とはある程度異なっている。しかし、どちらも電磁気力の1つの現われで有ることに変わりは無い。
ここでは、電流の回りに磁場の発生する現象であるアンペールの法則から、磁場を導入する。
実験的に、十分に長い導線2本を距離 <math>r</math> だけ離して平行に配置し、それぞれの導線に電流 <math>I _1</math> と <math>I _2</math> を流すと、導線には <math>1\, \rm m</math> 当たり
:<math>
f = \frac {\mu _0}{2\pi} \frac{I _1 I _2}{r}
</math>
だけの力が働くことが知られている。
ここで、
:<math>
\mu _0
</math>
という量が与えられたが、この量は磁気的な力に関連する定数である。
この量の次元と大きさは後に述べる。
これだけでは、この力が上でいう電気力と区別するものなのかどうか
わからない。しかし、例えば磁石の発する磁気に対して強く反応する
鉄などの物質をその回りに近づけることで、導線に引きよせられるような
力が働くことから、この力は、電気力ではなく磁気力によるもので
あることが示唆される。
=== 磁界 ===
上のように電流の回りに生じる磁気の強さは、導線からの距離に
のみ依存することが、砂鉄等を用いた実験によって確かめることが
できる。
また、磁気の方向は、電流の流れる方向にネジが進むように
回転する方向になっている。このことを右ネジの法則と呼ぶことがある。
これらの量は、電流によって作りだされた磁気力を伝える新たな場であると
考えることが出来る。この量を磁界、または磁場と呼ぶ。
上の結果から、磁場は導線の距離によってその強さが変化し、
その方向は導線の回りを回転するようになっていることが期待される。
これらを考慮して、電流Iの回りに現われる磁界は、
:<math>
\vec B = \frac {\mu _0} {2\pi} \frac {I } r
</math>
与えられる。
ここで、
:<math>
\mu _0
</math>
は、真空の透磁率と呼ばれる量で、その量は
:<math>
\mu _0 = 4\pi \times 10^ {-7} \, {\textrm N \cdot \textrm A^{-2}}
</math>
を満たす。この量は測定されたものというより定義によるものであり、
端数の無い定まった量を持つ。
この量(別の導線との相互作用は、導線の単位長さに対して、
:<math>
\vec f = \vec I \times \vec B
</math>
で書かれる。
ここで、この式の
:<math>
\times
</math>
は、ベクトルの外積を表わす。ベクトルの外積については、
[[物理数学I]]で解説する。
また、この式に、
:<math>
\vec B = \frac {\mu _0} {2\pi} \frac {I } r
</math>
を代入すると、<math>I _2</math>だけの電流が流れる導線の単位長さあたりに対して、
:<math>
\vec f = \frac {\mu _0} {2\pi} \frac {I I _2} r
</math>
の力が働くが、これは上の表式と一致している。
このため、磁場を使った表式は電流間の相互作用を書き表す方法として
正しい結果を表わしている。
この式は、物理的には電流を磁場に対して垂直な方向に流すと、
電流は力を受けることを示している。この法則は、
フレミングの左手の法則として知られている。
さて、実際には、微視的には、電流は導線中の電荷の流れである。そのため、ここで起こっていることは
実際には、磁場の中を電荷を持った粒子が横切ったとき、その粒子には
力が働くことに対応している。
この力は、ローレンツ力と呼ばれる。
この力は、
:<math>
\vec f = q \vec v \times \vec B
</math>
で書かれる。式中のqは電荷の大きさであり、単位はクーロン C である。
== ベクトルポテンシャル ==
一般に、ベクトル場 <math>\boldsymbol B</math> の発散がない:
<math>\nabla \cdot \boldsymbol B = 0</math>
とき、
:<math>\nabla \times \boldsymbol{A} = \boldsymbol{B}</math>
を満たすベクトル場 <math>\boldsymbol A</math> が存在する。<math>\boldsymbol A</math> をベクトルポテンシャルという。
ベクトルポテンシャルを導入する利点として、まずは計算の利便性が挙げられる。ビオ・サバールの法則によって直接磁場を計算するよりも、最初にベクトルポテンシャルを求めたのちに、その回転として磁場を計算する事ができる(たとえば円電流の作る磁場など)。
実際、
<math>\nabla \times (\nabla \times \boldsymbol{A}) = \nabla \times \boldsymbol{B} = \mu_0 \boldsymbol j</math>
[[物理数学I ベクトル解析#微分公式|ベクトル解析の公式]]より、
<math>\nabla \times (\nabla \times \boldsymbol{A}) = \nabla(\nabla \cdot \boldsymbol A) - \triangle \boldsymbol{A}</math>
となる。ここで、我々は <math>\nabla \times \boldsymbol{A} = \boldsymbol{B}</math> を満たすベクトル場を一つ見つけてしまえばいい。そこで、計算しやすいように<math>\nabla \cdot \boldsymbol A = 0</math> を仮定してみれば<ref>もし、<math>\nabla \cdot \boldsymbol A = 0</math> を満たす解が見つからなければ、ここまで引き返すことにする。</ref>、
<math>\triangle \boldsymbol A = - \mu_0 \boldsymbol j </math>
を得る。これは、<math>i=x,y,z</math> について
<math>\triangle A_i = - \mu_0 j_i </math>
と書けることからも分かるように、3本の独立したポアソン方程式である。よって、その解は
<math>\boldsymbol A(\boldsymbol x) = \frac{\mu_0}{4\pi}\int\frac{\boldsymbol j(\boldsymbol x')}{|\boldsymbol x - \boldsymbol x'|}dV </math>
で与えられる。ただし、積分範囲は全空間で、積分変数は <math>\boldsymbol x'</math> である。
次に、このベクトルポテンシャルの公式から磁場 <math>\boldsymbol B</math> を求めよう。 <math>R = |\boldsymbol x - \boldsymbol x'|</math>, <math>\boldsymbol R = \boldsymbol x - \boldsymbol x'</math>として計算すると、
<math>\begin{align}
\boldsymbol B &= \nabla \times \boldsymbol A\\
&= \frac{\mu_0}{4\pi}\int\nabla\frac{1}{R}\times \boldsymbol jdV\\
&= \frac{\mu_0}{4\pi}\int\frac{\boldsymbol j \times\boldsymbol R}{R^3}dV
\end{align} </math>
となる。<math>\nabla</math> は <math>\boldsymbol x</math> に対する微分であり、 <math>\boldsymbol x'</math> には掛からないことに注意。これはビオ・サバールの法則である。
=== ビオ-サバールの法則 ===
上では導線の回りに生じる磁界について考えた。
導線の中では、微視的に見ると電荷が定常的に運動しており、そのようなときに
回りに磁場が引き起こされることが予想される。
実際には、導線はもっと複雑な配置にすることも出来る。
例えば、導線を円形に配置したときにも、その回りには磁場が発生することが
知られている。
このような場合の磁界の計算法として
:<math>
d\vec B = \frac {\mu _0}{4\pi} \int d\vec s \times \vec r \frac 1{|\vec r|^3}
</math>
が知られている。この式は、ビオ-サバールの法則と呼ばれる。
ここで、積分は導線に沿った線積分であり、<math>
\vec r
</math> は、導線上の点から磁場を計算したい点までのベクトルを表わしている。
==== 直線電流の作る磁場 ====
例として、無限遠から無限遠まで続く導線からrだけ離れた点での磁場を計算する。この条件は、上のように長い導線を平行に置いたときの条件と近似的に一致している。
[[ファイル:ビオ・サバール.jpg|サムネイル]]
まず導線はz軸方向に置かれているとする。
さらに磁場の大きさを計算する点の座標を
P(a,0,0)とし、計算を進める点の座標を(0,0,s)とし、
原点をOとおく。
ビオ-サバールの法則より、
<math>
d\vec H = \frac {I}{4\pi} \frac{d\vec s \times \vec r }{r^3}
= \frac {I}{4\pi} \frac{\sin\theta ds}{r^2} \vec e_y
</math>
となる。右図より、
<math>r = \frac{a}{\sin \theta},s = -a \cot \theta,ds = \frac{a}{\sin^2\theta}d\theta</math>
となる。したがって、
<math>
\begin{align}\vec H &= \int_{-\infty}^{\infty} \frac {I}{4\pi} \frac{\sin\theta ds}{r^2} \vec e_y\\ &= \frac {I}{4\pi a} \int_0^\pi \sin\theta d\theta \vec e_y\\ &= \frac {I}{4\pi a} [-\cos\theta]_0^\pi \vec e_y\\ &= \frac {I}{2\pi a} \vec e_y
\end{align}
</math>
となる。
この表式は、ベクトルの方向まで含めて、以前導線の回りの磁場として
与えた式と一致している。このことから、ビオ-サバールの法則は、
以前与えた表式の拡張となっていることが分かる。
また、直線電流の長さが有限である場合は、電流の端における <math>\theta</math> の値を <math>s</math> が小さいほうから <math>\theta_1,\theta_2</math> とすると、
<math>
\begin{align}\vec H &= \frac {I}{4\pi a} \int_{\theta_1}^{\theta_2} \sin\theta d\theta \vec e_y\\
&= \frac {I}{4\pi a}(\cos \theta_1 - \cos \theta_2) \vec e_y
\end{align}
</math>
を得る。
==== 円形電流のつくる磁場 ====
図のように、半径 <math>a</math> の円周に沿って電流 <math>I</math> を流したときに円の中心から高さ <math>z</math> のところに作る磁場を求める。
微小電流 <math>
Ids
</math> が点 <math>
Q
</math> につくる磁場のうち <math>
z
</math> 軸に垂直な成分は反対側の微小電流に打ち消されるため、<math>
z
</math> 軸に平行な成分 <math>
\cos\alpha d H
</math> のみを考える。
ビオ-サバールの法則より、
<math>
|d\vec H| = \frac {I}{4\pi} \frac{|d\vec s \times \vec r|}{r^3}
= \frac {I}{4\pi} \frac{ds}{a^2+z^2},\,\cos\alpha = \frac{a}{(a^2+z^2)^\frac 1 2}
</math>
[[ファイル:Biot-savart.PNG|サムネイル]]
となるから、
<math>
d H\cos\alpha = \frac {I}{4\pi} \frac{ads}{(a^2+z^2)^\frac 3 2}
</math>
となる。<math>
\int ds = 2\pi a
</math> であるから
<math>
H = \frac{Ia^2}{2(a^2+z^2)^\frac 3 2}
</math>
となる。
==== 無限に長いソレノイドの中心の磁場 ====
ソレノイドは半径 <math>
a
</math> の円形電流が同心円状に単位長さ当たり <math>
n
</math> 個連続的に分布しているものと考えられる。無限に長いソレノイドの中心の磁場は各円形電流が中心につくる磁場を <math>
z
</math> について積分することで求められる。従って、
<math>
H = \int_{-\infty}^{\infty} \frac{Ia^2}{2(a^2+z^2)^\frac 3 2}ndz = \frac{nI}{2}\left[\frac{z}{(a^2+z^2)^\frac 1 2}\right]_{-\infty}^{\infty} = nI
</math>
となる。
== 演習問題 ==
== 脚注 ==
[[Category:電磁気学|せいしは]]
fe9peohczif3sbvitekzbl30prlrpdg
COBOL
0
32370
301864
267447
2026-07-25T21:41:05Z
~2026-41574-07
92130
301864
wikitext
text/x-wiki
<small>[[メインページ]] > [[工学]] > [[情報技術]] > [[プログラミング]] > [[COBOL]]</small>
COBOL(コボル)は、1960年に事務処理用に開発されたプログラミング言語です。
名前は「Common Business Oriented Language」(共通事務処理用言語)に由来します。
[[Fortran]]・[[Lisp]]とともに最も古いプログラミング言語の1つですが、
それ故、多くのソフトウェア資産の蓄積があり、2022年の今日でも現役のプログラミング言語として使用されています。
== COBOLの特徴 ==
COBOLの特徴を簡単なコード例とともに示します。以下は、COBOLのいくつかの特徴を示す基本的なコードスニペットです。
# データ定義の明確さ
#: この例では、<code>Employee-Record</code>というデータ構造を定義しています。各フィールドは<code>PIC</code>(Picture)クラウスを使用してデータの型と桁数を指定しています。
#:<syntaxhighlight lang=cobolfree copy>
IDENTIFICATION DIVISION.
PROGRAM-ID. SampleProgram.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Employee-Record.
05 Employee-ID PIC 9(5).
05 Employee-Name PIC X(20).
05 Employee-Salary PIC 9(7)V99.
PROCEDURE DIVISION.
</syntaxhighlight>
# 構造化プログラミング
#: COBOLは構造化プログラミングをサポートしており、<code>IF</code>文を通じて条件分岐を行います。
#:<syntaxhighlight lang=cobolfree copy>
IF Employee-Salary > 50000
DISPLAY 'High Salary'.
ELSE
DISPLAY 'Low Salary'.
</syntaxhighlight>
# データベースへのアクセス
#: 上記の例では、COBOLがデータベースへのアクセスを可能にするためのSQL文を使用しています。
#:<syntaxhighlight lang=cobolfree copy>
EXEC SQL
DECLARE EmployeeCursor CURSOR FOR
SELECT Employee-Name, Employee-Salary
FROM EmployeeTable
WHERE Department = 'IT'.
EXEC SQL
OPEN EmployeeCursor.
PERFORM UNTIL SQLCODE NOT = 0
EXEC SQL
FETCH NEXT FROM EmployeeCursor
INTO :Employee-Name, :Employee-Salary
END-EXEC.
DISPLAY 'Employee: ' Employee-Name 'Salary: ' Employee-Salary.
END-PERFORM.
EXEC SQL
CLOSE EmployeeCursor.
</syntaxhighlight>
== 簡単なCOBOLプログラム ==
以下は簡単なCOBOLのプログラムです。
;[https://paiza.io/projects/TLWqnDzo0jQ0VBCz8EgLZA?language=cobol hello.cbl]:<syntaxhighlight lang=cobolfree copy>
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY "Hello World 12345!".
STOP RUN.
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
Hello World!
</syntaxhighlight>
{{コラム|width=100%|オンラインのコンパイル・実行環境|2=
[https://paiza.io/ paiza.IO] の様な、オンラインのコンパイル・実行環境であればウェブブラウザーだけで、COBOLのプログラムをコンパイル・実行できます。
上の例の、[https://paiza.io/projects/TLWqnDzo0jQ0VBCz8EgLZA?language=cobol hello.cbl] のようなリンク先を開くと、ウェブブラウザー上でコンパイル・実行することが出来ます。
}}
== 環境構築 ==
=== GnuCobol ===
GnuCOBOL(旧OpenCOBOL、短期間GNU Cobolとして知られていました)は、COBOLのフリーな実装です。
GnuCOBOLは、ネイティブのCコンパイラを使用するCへのトランスコンパイラです。
==== GNU/Linuxの場合 ====
ディストリビューションにより、パッケージマネージャとパッケージ体系に違いがありますが、例えば Fedora Linux では、
<syntaxhighlight lang="bash">
$ sudo dnf install gnucobol
$ cobc --version
cobc (GnuCOBOL) 3.1.2.0
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Keisuke Nishida, Roger While, Ron Norman, Simon Sobisch, Edward Hart
Built Jan 26 2021 00:00:00
Packaged Dec 23 2020 12:04:58 UTC
C version "11.0.0 20210123 (Red Hat 11.0.0-0)"
loading standard configuration file 'default.conf'
</syntaxhighlight>
:で導入およびバージョンの確認できます。
=== FreeBSDの場合 ===
FreeBSD Ports/Packages Collection の、<code>ports/lang/gnu-cobol</code> にあるので、
:<syntaxhighlight lang="csh">
% doas make -C lang/gnu-cobol all install clean
</syntaxhighlight>
でビルドしインストールできます
また
:<syntaxhighlight lang="csh">
% doas pkg install gnucobol-3.2_2
</syntaxhighlight>
でビルド済みパッケージをインストールできますが、GnuCOBOL自身のバージョンアップやportsのパッチレベルの更新で <code>gnucobol-3.2_2</code>の部分は変わるので、
:<syntaxhighlight lang="csh">
% pkg search cobol
gnucobol-3.2_2 Free/libre COBOL compiler
</syntaxhighlight>
の様に、最初に最新のパッケージ名を確認してください。
;バージョンを確認:<syntaxhighlight lang="shell">
% cobc -V
cobc (GnuCOBOL) 3.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Keisuke Nishida, Roger While, Ron Norman, Simon Sobisch, Edward Hart
Built Jan 13 2025 13:58:08
Packaged Jan 13 2025 04:57:58 UTC
C version "FreeBSD Clang 19.1.5 (https://github.com/llvm/llvm-project.git llvmorg-19.1.5-0-gab4b5a2db582)"
% _
</syntaxhighlight>
== コマンドラインでのコンパイルと実行 ==
[[#簡単なCOBOLプログラム|簡単なCOBOLプログラム]]のソースコードを hello.cbl という名前で保存し、コンパイルし実行してみよう。
:<syntaxhighlight lang="console" Line>
% cobc -x hello.cbl
% ls
hello hello.cbl
% ./hello
Hello World 12345!
</syntaxhighlight>
# 実行ファイル <code>hello</code> を得るためにCOBOLコンパイラ cobc に −x をつけてコンパイル
#* -x をつけないとシェアードライブラリが出来、これは実行できません。
# 確認してみると
# hello が出来ている
# 早速実行すると
# 正しく表示
== COBOLの正書法 ==
COBOLの正書法には、自由書式正書法と固定書式正書法の2種類があります。
それぞれの正書法には以下のような特徴があります。
;固定形式正書法
:一連番号領域、標識領域、プログラム記述領域など、行内の文字位置によって使い方が明確に定義されている書き方です。
;自由書式正書法
:一連番号領域や標識領域がなく、プログラムは行のどの位置にも書くことが出来ます。
処理系によっては、コマンドラインオプションなどで正書法の切り替えが可能な場合があるので、詳しくは使用している処理系のマニュアルを参照してください。
== COBOLプログラムの構成 ==
=== COBOLプログラムのトップレベルの構成 ===
COBOLプログラムのトップレベルは
* 見出し部(IDENTIFICATION DIVISION)
* 環境部(ENVIRONMENT DIVISION)
* データ部(DATA DIVISION)
* 手続き部(PROCEDURE DIVISION)
の4つのパートから構成され、順序もこの順序である必要があります。
=== 見出し部(IDENTIFICATION DIVISION) ===
IDENTIFICATION DIVISIONは、COBOLプログラムの最初のパートで、
プログラム名、作成者、作成日などのプログラム保守情報を含みます。
これらは、見出し部の段落として記述します。
:<syntaxhighlight lang=cobolfree copy>
IDENTIFICATION DIVISION.
PROGRAM-ID. SampleProgram.
AUTHOR. YourName.
</syntaxhighlight>
=== 環境部(ENVIRONMENT DIVISION) ===
ENVIRONMENT DIVISIONは、COBOLプログラムの2番目のパートで、
作成するプログラムをコンパイルして実行するコンピュータの名前、環境変数の受け渡しに関する情報、プログラムとの間で読み書きするファイルの名前と種類を定義します。
:<syntaxhighlight lang=cobolfree copy>
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-PC.
</syntaxhighlight>
=== データ部(DATA DIVISION) ===
DATA DIVISIONはCOBOLプログラムの3番目のパートで、これまでのDIVISIONはCOBOLプログラムを構築するためのメタデータで、
DATA DIVISIONからが実際にプログラムを構築していくところだと言えます。
DATA DIVISIONでは、入出力ファイルの配置、データ項目(変数)、外部プログラムとのインタフェース(引数)など、プログラムで扱うすべてのデータを定義します。
:<syntaxhighlight lang=cobolfree copy>
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Employee-Name PIC X(30).
01 Employee-Age PIC 9(3).
FILE SECTION.
01 Employee-File.
05 Employee-ID PIC 9(5).
05 Employee-Salary PIC 9(7)V99.
</syntaxhighlight>
=== 手続き部(PROCEDURE DIVISION) ===
PROCEDURE DIVISIONは、COBOLプログラムの最後のパートで、プログラムが実行する処理を記述します。
:<syntaxhighlight lang=cobolfree copy>
PROCEDURE DIVISION.
DISPLAY 'Enter employee name: '.
ACCEPT Employee-Name.
DISPLAY 'Enter employee age: '.
ACCEPT Employee-Age.
IF Employee-Age > 30
DISPLAY 'Senior Employee'
ELSE
DISPLAY 'Junior Employee'.
</syntaxhighlight>
前3つのDIVISIONとは異なり、手続き部には定義された節や段落の様な既定の構造はありません。
節や段落は、プログラマが必要に応じて作成します。
COBOLにおいて、FortranのSubroutineやC言語の関数に相当する構文は、主に「サブルーチン」と「関数」です。以下に、それぞれの概要を説明します。
# サブルーチン(Subroutine):
#* COBOLにおいて、サブルーチンはプログラム内の再利用可能なブロックを指します。サブルーチンは、PERFORM文を使用して呼び出されます。サブルーチン内で実行される処理は、呼び出し元に戻るまで制御が戻りません。
#:<syntaxhighlight lang=cobolfree copy>
IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Counter PIC 9(3) VALUE 0.
PROCEDURE DIVISION.
PERFORM Display-Message THRU Display-Message.
DISPLAY 'Back in the main program.'.
Display-Message.
ADD 1 TO Counter.
DISPLAY 'Message number ' Counter.
</syntaxhighlight>
#: 上記の例では、<code>Display-Message</code>がサブルーチンとなり、これを<code>PERFORM</code>文で呼び出しています。
# 関数(Function):
#* COBOLにおいて、関数は一般的なプログラミング言語での関数と同様、特定の計算や処理を実行し、その結果を呼び出し元に返すものです。関数は<code>FUNCTION</code>キーワードを使用して呼び出されます。
#:<syntaxhighlight lang=cobolfree copy>
IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Value-A PIC 9(3) VALUE 10.
01 Value-B PIC 9(3) VALUE 20.
01 Result PIC 9(3).
PROCEDURE DIVISION.
COMPUTE Result = Add-Values(Value-A, Value-B).
DISPLAY 'The result is: ' Result.
FUNCTION Add-Values.
PARAMETERS Value-X, Value-Y.
COMPUTE Add-Values = Value-X + Value-Y.
</syntaxhighlight>
#:上記の例では、<code>Add-Values</code>が関数となり、これを<code>COMPUTE</code>文で呼び出しています。
COBOLのサブルーチンと関数は、プログラムの構造を明確にし、再利用性を高めるために使われます。
{{コラム|width=100%|他言語のプログラマのCOBOLへの移行での注意点|2=他のプログラミング言語からCOBOLへの移行においては、特定のプログラマがCOBOLという異なる言語に適応するためのいくつかの注意点があります。
以下は、他の言語のプログラマがCOBOLに移行する際に留意すべき点です。
;自然言語に近い文法:COBOLは英語に近い自然言語の文法を持つため、通常のプログラミング言語とは異なる表現があります。英文のような記述やDIVISION、SECTION、PARAGRAPHの概念に慣れる必要があります。
;データ指向プログラミング:COBOLは主にデータ指向プログラミングに焦点を当てています。他のプログラミング言語でよく見られるオブジェクト指向プログラミングの概念とは異なります。データ構造やレコードの定義が特に重要です。
;ビジネスアプリケーションの特性:COBOLは主にビジネスアプリケーションの開発に使用されており、金融や保険などの分野で広く利用されています。ビジネスルールの理解や、大規模なデータ処理、バッチ処理の概念について理解が必要です。
;移植性の懸念:COBOLは主にメインフレームやミッドレンジコンピュータ上で実行されることが多いです。他の言語と異なる実行環境に適応するために、COBOLが実行されるプラットフォームに関する理解が必要です。
;標準ライブラリの習得:COBOLの標準ライブラリは、ビジネスアプリケーションに特有の機能を提供します。他のプログラミング言語の標準ライブラリとは異なるため、これを理解し、活用することが必要です。
;ツールや開発環境の違い:COBOL用の開発ツールや統合開発環境は他の言語とは異なるものがあります。これらのツールや環境に慣れる必要があります。
COBOLは長寿で広く使用されている言語ですが、他の言語からの移行者にとっては新しい概念や文法に適応する過程があるかもしれません。十分なトレーニングと実践が必要です。
}}
== COBOLの変遷 ==
COBOL(Common Business-Oriented Language)は、ビジネスアプリケーション向けに開発されたプログラミング言語です。1950年代は、メーカー各社が異なる独自アーキテクチャーのコンピューターを製造販売しており、提供される事務処理用のプログラミング言語もメーカーごとに異なっていました。1959年に、当時のコンピューターの主要ユーザーであったアメリカの国防総省の働きかけで、コンピューターメーカーやユーザーの代表が集まり、共通な事務処理用言語の必要性を議論する会議が開催されました。会議の結論として、共通の事務処理用言語の開発に向けて複数の委員会組織の設置が決まり、自主的な活動が始まりました(国防総省も、あくまで委員の立場で参加)。その後、この活動と組織をまとめてCODASYL(Conference on Data Systems Languages)と、自ら名乗るようになりました。以下に、COBOLの変遷について簡単に説明します。
; 初期の開発(1960年代): COBOLは、コンピューターメーカー間で共通に使える事務処理用プログラミング言語となることをめざして開発され、1960年に言語仕様が公開されました。メーカー各社が、公開された仕様書に従って、自社の独自アーキテクチャーのコンピューター向けにCOBOLコンパイラの提供を始め、異なるコンピューター上でも共通の言語としてCOBOLが使えるようになっていきました。後に主流となるメインフレームコンピューター上のバッチ処理やファイル処理にも、COBOLは利用されました。
;COBOL 60
:COBOLはANSI(American National Standards Institute)やISO(International Organization for Standardization)によって標準化され、これによって異なるベンダー間でのプログラムの互換性が向上しました。
:1960年に初めてCOBOLが発表され、その初版として知られています。しかし、このバージョンはあまり広く使われませんでした。
;COBOL 61 (Revised COBOL 60):COBOL 60の修正版として、1961年に発表されました。これはCOBOLの最初の主要なリリースで、いくつかの文法の変更や追加が行われました。
;COBOL 65:1965年にはCOBOL 65が発表され、新しい機能や拡張が導入されました。
;COBOL 68:1968年にCOBOL 68が登場し、いくつかの機能が改訂され、新しい機能も導入されました。このバージョンは標準規格として広く受け入れられました。
;COBOL 74:1974年に発表され、COBOL 68をベースにしていくつかの変更や追加が行われました。これにより、ファイル操作などが改善されました。
;COBOL 85:1985年にはCOBOL 85が発表されました。これは大規模なリファクタリングが行われ、構造化プログラミングや新しいデータ型の導入などが含まれました。COBOL 85はANSIとISOによって標準化されました。
;COBOL 2002:COBOL 2002は、2002年に登場しました。このバージョンでは、オブジェクト指向プログラミングのサポートやXMLの処理などが追加されました。
;COBOL 2014:2014年に発表されたCOBOL 2014では、新しい機能や改訂が導入され、モダンな開発環境に対応するための取り組みが行われました。
これらのバージョンは、COBOLの進化を示しています。それぞれの規格で新しい機能や改善が導入され、COBOLは長い間にわたって広く利用され続けています。
== 改廃された技術 ==
COBOLの改廃された技術や利用が推奨されない技術は、言語の標準化、現代的なプログラミング手法の導入、保守性の向上などによって置き換えられてきました。以下に、代表的な技術を示します。
=== ALTER文 ===
* '''サポート開始年:''' COBOL-60
* '''サポート終了年:''' COBOL 2002で非推奨
; 廃止または衰退の理由
: プログラムの流れを動的に変更する機能であり、保守性が著しく低下し、スパゲッティコードの原因となるため。
; 代替技術
: EVALUATE文や構造化プログラミング手法の使用が推奨されます。
=== ENTER文 ===
* '''サポート開始年:''' COBOL-60
* '''サポート終了年:''' COBOL 85で廃止
; 廃止または衰退の理由
: 他言語との連携のために使用されていましたが、標準化された呼び出し規約の登場により不要となりました。
; 代替技術
: CALL文による標準的なサブプログラム呼び出しが推奨されます。
=== NOTE段落 ===
* '''サポート開始年:''' 初期のCOBOL
* '''サポート終了年:''' COBOL 2002で非推奨
; 廃止または衰退の理由
: コメントとして使用されていましたが、より明確な方法が導入されました。
; 代替技術
: アスタリスク(*)で始まるコメント行や>>による固定形式のコメントが推奨されます。
=== EXAMINE文 ===
* '''サポート開始年:''' COBOL-60
* '''サポート終了年:''' COBOL 85で廃止
; 廃止または衰退の理由
: 文字列操作機能として限定的で、より強力な代替手段が導入されました。
; 代替技術
: INSPECT文による文字列操作が推奨されます。
=== GO TO文(プロシージャ外への分岐) ===
* '''サポート開始年:''' COBOL-60
* '''サポート終了年:''' 現在も使用可能だが強く非推奨
; 廃止または衰退の理由
: プログラムの構造を複雑にし、デバッグや保守を困難にするため。
; 代替技術
: PERFORM文や構造化プログラミング手法の使用が推奨されます。
=== TRANSFORM文 ===
* '''サポート開始年:''' 初期のCOBOL方言
* '''サポート終了年:''' 標準COBOLでは採用されず
; 廃止または衰退の理由
: ベンダー固有の機能であり、移植性に問題があったため。
; 代替技術
: INSPECT文やSTRING/UNSTRING文による文字列操作が推奨されます。
=== 固定形式プログラム記述 ===
* '''サポート開始年:''' COBOL-60
* '''サポート終了年:''' 現在も使用可能だが新規開発では非推奨
; 廃止または衰退の理由
: パンチカードの制約に基づく古い形式で、可読性と保守性に問題があります。
; 代替技術
: フリー形式のプログラム記述形式が推奨されます。
=== ON文 ===
* '''サポート開始年:''' 初期のCOBOL
* '''サポート終了年:''' COBOL 2002で非推奨
; 廃止または衰退の理由
: 例外処理として不十分で、より体系的な方法が導入されました。
; 代替技術
: DECLARATIVES部や構造化された例外処理の使用が推奨されます。
=== DATA RECORDS句 ===
* '''サポート開始年:''' COBOL-60
* '''サポート終了年:''' COBOL 2002で非推奨
; 廃止または衰退の理由
: ファイル記述において冗長で、より簡潔な方法が導入されました。
; 代替技術
: RECORD句やモダンなファイル記述方法の使用が推奨されます。
== 脚註 ==
<references />
{{DEFAULTSORT:COBOL}}
[[Category:COBOL|*]]
[[Category:プログラミング言語]]
ch7pvpnv0ykyrvlckrcfr4d8k8k6u7d
物理数学II/特殊関数
0
39295
301866
300425
2026-07-26T08:28:10Z
Nermer314
62933
301866
wikitext
text/x-wiki
== Γ函数 ==
階乗を複素数にまで拡張することを考えてみよう。<math>x</math> を正の整数とする。このとき、
<math>\begin{align}
(x-1)! &= \frac{x!(n+x)!}{x(x+n)!}\\
&= \frac{(n+x)!}{x(x+1)\cdots(x+n)}\\
&= \frac{n^x n!}{x(x+1)\cdots(x+n)} \frac{n+1}{n}\frac{n+2}{n}\cdots \frac{n+x}{n}
\end{align}</math>
となる。ここで、<math>n</math> は任意の非負整数である。<math>\frac{n+1}{n}\frac{n+2}{n}\cdots \frac{n+x}{n}</math> の部分が定義されるには <math>x</math> が正の整数である必要があるが、<math>n</math> の極限を取ると、
<math>\lim_{n\to \infty}\frac{n+1}{n}\frac{n+2}{n}\cdots \frac{n+x}{n} = 1</math>
より、この部分が消えてくれるので
<math>(x-1)! = \lim_{n\to\infty}\frac{n^x n!}{x(x+1)\cdots(x+n)} </math>
となり、右辺は複素数に拡張可能な式が得られる。これを
<math>\Gamma(s) = \lim_{n\to\infty}\frac{n^s n!}{s(s+1)\cdots(s+n)} </math>
としてΓ函数を定義する。
Γ函数は定義より、 正の整数 <math>x </math> について <math>\Gamma(x) = (x-1)!</math> が成り立つ。特に、<math>\Gamma(1) = 1</math> である。
<math>\begin{align}
\Gamma(s+1) &= \lim_{n\to\infty}\frac{n^{s+1} n!}{(s+1)\cdots(s+1+n)}\\
&= \lim_{n\to\infty}\frac{s n}{s+1+n}\frac{n^{s} n!}{s(s+1)\cdots(s+n)}\\
&= s \Gamma(s)
\end{align} </math>
となる。これは、 <math>s! = s(s-1)!</math> に対応する。Γ函数の収束について議論するには無限積の形に変形するほうがやりやすい。
<math>\begin{align}
\frac{s(s+1)(s+2)\cdots (s+n)}{n^s n!} &= \frac{s}{n^s} \left(1+\frac s 1 \right)\left(1+\frac s 2 \right)\cdots \left(1+\frac s n \right)\\
&= se^{(\frac 1 + \frac 1 2 + \cdots + \frac 1 n -\ln n)s} \left(1+\frac s 1 \right)e^{-s}\left(1+\frac s 2 \right)e^{-\frac s 2}\cdots \left(1+\frac s n \right)e^{-\frac s n}
\end{align}</math>
となるから、
<math>\frac{1}{\Gamma(s)} = s e^{\gamma s} \prod_{n=1}^\infty \left(1 + \frac s n \right) e^{-\frac s n}</math>
を得る。与えられた <math>s</math> に対して<math>|s| \le \frac R 2</math> が成り立つ十分大きな正の整数 <math>R</math> を取る。任意の <math>n > R</math> について
<math>\begin{align}
\left|\ln\left(1+\frac s n\right) - \frac s n\right| &\le -\frac 1 2 \left|\frac s n\right|^2 +\frac 1 3 \left|\frac s n\right|^3 - \frac 1 4 \left|\frac s n\right|^4 + \cdots\\
&= \left|\frac s n\right|^2 \left(1+\left|\frac s n\right|+\left|\frac s n\right|^2+\cdots\right)\\
&= \frac 1 4 \left|\frac R n\right|^2\left\{1+\left(\frac 1 2\right)+\left(\frac 1 2\right)^2+\cdots\right\}\\
&\le \frac 1 2 \left(\frac R n\right)^2
\end{align}</math>
となる。<math>\sum_{n=R+1}^\infty \frac 1 2 \frac{R^2}{n^2}</math> は収束するから、
<math>\sum_{n=R+1}^\infty \left\{\ln\left(1+\frac s n\right) - \frac s n \right\}</math>
は <math>|s| \le \frac R 2</math> ならば絶対に一様収束する。従って、<math>\prod_{n=R+1}^\infty \left(1 + \frac s n \right) e^{-\frac s n}</math> は正則函数である。すなわち、<math>s e^{\gamma s} \prod_{n=1}^\infty \left(1 + \frac s n \right) e^{-\frac s n}</math> は正則函数である。<math>R</math> は任意であるから、すべての有限の <math>s</math> について成り立つ。
'''定理'''
実函数 <math>f(s)</math> が <math>s>0</math> で
# <math>f(s+1)=sf(s)</math>
# <math>f(s) > 0</math> であり <math>\ln f(s)</math> は凸函数
を満たせば、<math>f(s) = f(1) \Gamma(s)</math> である。
'''証明'''
凸函数 <math>g(x) = \ln f(x)</math> に対して <math>x_1 < x < x_2</math> とすると、
<math>\frac{g(x)-g(x_1)}{x-x_1} \le \frac{g(x_2)-g(x_1)}{x_2-x_1} \le \frac{g(x_2)-g(x)}{x_2-x}</math>
が成り立つ。<math>0 < s < 1</math> として、また <math>n\ge 2</math> を自然数として、不等式に <math>n < n+s < n+1</math> と <math>n-1 < n < n+s</math> を代入すると、
<math>\underline{\frac{\ln f(n+s)-\ln f(n)}{s}} \le \underline{\ln f(n+1)-\ln f(n)} \le \frac{\ln f(n+s)-\ln f(n+s)}{1-s}</math>
<math>\underline{\ln f(n)-\ln f(n-1)} \le \frac{\ln f(n+s)-f(n-1)}{s+1} \le \underline{\frac{\ln f(n+s)-\ln f(n)}{s}}</math>
となる。ここから下線部を抜き出して
<math>\ln f(n)-\ln f(n-1) \le \frac{\ln f(n+s)-\ln f(n)}{s} \le \ln f(n+1)-\ln f(n)</math>
を得る。<math>f(s+1)=sf(s)</math> を使うと、
<math>\ln (n-1) \le \frac{\ln f(n+s)-\ln f(n)}{s} \le \ln n</math>,
<math>(n-1)^s f(n) \le f(n+s) \le n^s f(n)</math>
となる。<math>f(n+s) = (n+s-1)(n+s-2)\cdots (s+1)sf(s) </math> より、
<math>\frac{(n-1)^s f(n)}{s(s+1)\cdots (n+s-1)} \le f(s) \le \frac{n^s f(n)}{s(s+1)\cdots (n+s-1)}</math>
左側の不等式で <math>n</math> を <math>n+1</math> に変えれば、
<math>\frac{n^s f(n+1)}{s(s+1)\cdots (n+s)} \le f(s) \le \frac{n^s f(n)}{s(s+1)\cdots (n+s-1)} = \frac{n^s f(n+1)}{s(s+1)\cdots (n+s)}\frac{s+n}{n} </math>
すなわち、
<math>f(s)\frac{n}{s+n} \le \frac{n^s f(n+1)}{s(s+1)\cdots (n+s)} \le f(s) </math>
となる。ここに、<math>f(n+1) = n! f(1) </math> を代入して、<math>n\to \infty </math> とすると、
<math>f(s) = f(1)\lim_{n\to\infty}\frac{n^s n!}{s(s+1)\cdots(s+n)} = f(1)\Gamma(s) </math>
が <math>0 < s < 1 </math> について成り立つ。<math>s =1 </math> では自明に成り立つから、<math>0 < s \le 1 </math> について成り立つ。任意の <math>s > 0 </math> については、<math>s = m + x, \, 0< x \le 1 ,\, m \in \mathbb N </math> と置いて、
<math>\begin{align}
\Gamma(s) &= \lim_{n\to\infty}\frac{n^s n!}{s(s+1)\cdots(s+n)}\\
&= \lim_{n\to\infty}\frac{n^x n!}{x(x+1)\cdots(x+n)} \frac{n^m x(x+1)\cdots(x+m-1)}{(x+n+1)\cdots(x+n+m)}\\
&= \frac{f(x)}{f(1)} x(x+1)\cdots(x+m-1)\\
&= \frac{f(s)}{f(1)}
\end{align} </math>
より成り立つ。
'''例1'''
<math>x > 0 </math> について、
<math>\Gamma(x) = \int_0^\infty t^{x-1}e^{-t}dt </math>
である。
<math>f(x) = \int_0^\infty t^{x-1}e^{-t}dt </math> とすると、
<math>\begin{align}
f(x+1) &= \int_0^\infty t^{x}e^{-t}dt\\
&= -t^x e^{-t}\Big|_0^\infty + x\int_0^\infty t^{x-1}e^{-t}dt\\
&= xf(x)
\end{align} </math>
が成り立つ。また、
<math>f'(x) = \int_0^\infty (\log t) t^{x-1}e^{-t}dt </math>
<math>f''(x) = \int_0^\infty (\log t)^2 t^{x-1}e^{-t}dt </math>
より、任意の実数 <math>u </math> について
<math>\begin{align}
u^2 f + 2u f' + f'' &= \int_0^\infty \left\{u^2 + 2u \ln t + (\ln t)^2\right\}t^{x-1}e^{-t}dt \\
&= \int_0^\infty (u + \ln t)^2 t^{x-1}e^{-t}dt\\
&\ge 0
\end{align} </math>
であるから、これを <math>u </math> についての二次式と考えると判別式は <math>f'^2 - f f'' \le 0 </math> となる。従って、
<math>\frac{d^2}{dx^2}\ln f(x) = \frac{ff''-f'^2}{f^2} \ge 0 </math>
より、<math>\ln f(x) </math> は凸函数である。<math>f(1) = \int_0^\infty e^{-t}dt = 1 </math> より、<math>f(x) = \Gamma(x) </math> を得る。
'''例2'''
<math>x > 0, \, y > 0 </math> について
<math>\Beta(x,y) = \int_0^1 t^{x-1}(1-t)^{y-1}dt </math> とすると、
<math>\Beta(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)}</math>
である。
<math>y </math> を固定して <math>f(x) = \Gamma(x+y)\Beta(x,y) </math> と置くと、
<math>\begin{align}
\Beta(x+1,y) &= \int_0^1 t^x(1-t)^{y-1}dt\\
&= \int_0^1 (1-t)^{x+y-1}\left(\frac{t}{1-t}\right)^x dt\\
&= - \left.\frac{(1-t)^{x+y}}{x+y}\left(\frac{t}{1-t}\right)^x\right|_0^1 + \frac{x}{x+y}\int_0^1 (1-t)^{x+y}\frac{1}{(1-t)^2}\left(\frac{t}{1-t}\right)^{x-1} dt\\
&= \frac{x}{x+y}\Beta(x,y)
\end{align}</math>
となるから、<math>f(x+1) = \Gamma(x+y+1)\Beta(x,y) = x\Gamma(x+y)\Beta(x,y) = xf(x). </math>
また、<math>g(x) = \Beta(x,y) </math> に対し、
<math>g'(x) = \int_0^1 (\log t) t^{x-1}(1-t)^{y-1}dt </math>
<math>g''(x) = \int_0^1 (\log t)^2 t^{x-1}(1-t)^{y-1}dt </math>
となるから、
<math>u^2g + 2ug' + g'' = \int_0^1 (u+ \ln t)^2 t^{x-1}(1-t)^{y-1}dt \ge 0 </math>
より、例1と同じように <math>\ln g(x) </math> は凸函数である。従って、
<math>\ln f(x) = \ln \Gamma(x+y) + \ln \Beta(x,y) </math>
も凸函数である。<math>\Beta(1,y) = \int_0^1 (1-t)^{y-1}dt = \frac 1 y </math> より、<math>f(1) = \frac 1 y \Gamma(y+1) = \Gamma(y) </math> である。従って、
<math>f(x) = \Gamma(y)\Gamma(x) </math>
すなわち、
<math>\Beta(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} </math>
を得る。
'''相反公式'''
<math>\begin{align}
\frac{1}{\Gamma(s)\Gamma(1-s)} &= \frac{1}{-s\Gamma(s)\Gamma(-s)}\\
&= \frac{1}{-s}se^{\gamma s}(-se^{-\gamma s})\prod_{n=1}^\infty \left(1+ \frac s n\right) e^{-\frac s n}\left(1-\frac s n\right) e^{\frac s n}\\
&= s\prod_{n=1}^\infty\left(1-\frac{s^2}{n^2}\right)\\
&= \frac{\sin \pi s}{\pi}
\end{align} </math>
となる。ただし、三角函数の無限乗積展開 <math>\sin \pi z = \pi z \prod_{n=1}^\infty \left(1-\frac{z^2}{n^2}\right) </math> を使った。従って、
<math>\Gamma(s)\Gamma(1-s) = \frac{\pi}{\sin \pi s} </math>
を得る。これを相反公式という。<math>s=\frac 1 2 </math> とすると <math>\Gamma\left(\frac 1 2\right) = \sqrt{\pi} </math> がわかる。
<math>\begin{align}
\Gamma\left(\frac 1 2\right) &= \int_{0}^\infty t^{-\frac 1 2}e^{-t}dt\\
&= 2 \int_{0}^\infty e^{-x^2}dx \quad (t = x^2)\\
&= \int_{-\infty}^\infty e^{-x^2}dx
\end{align} </math>
であるから、Gauss 積分 <math>\int_{-\infty}^\infty e^{-x^2}dx = \sqrt \pi </math> を得る。
'''Gaussの乗法公式'''
<math>\Gamma\left(\frac x n\right)\Gamma\left(\frac{x+1}{n}\right)\cdots \Gamma\left(\frac{x+n-1}{n}\right) = \frac{(2\pi)^{\frac{n-1}{2}}}{n^{x-\frac 1 2}} \Gamma(x).</math>
'''証明'''
<math>f(x) = n^x \Gamma\left(\frac x n\right)\Gamma\left(\frac{x+1}{n}\right)\cdots \Gamma\left(\frac{x+n-1}{n}\right)</math> とする。
このとき、
<math>\begin{align}
f(x+1) &= n^{x+1}\Gamma\left(\frac{x+1}{n}\right)\cdots \Gamma\left(\frac{x+n-1}{n}\right)\Gamma\left(\frac{x+n}{n}\right)\\
&= n^{x+1}\Gamma\left(\frac{x+1}{n}\right)\cdots \Gamma\left(\frac{x+n-1}{n}\right)\frac{x}{n}\Gamma\left(\frac{x}{n}\right)\\
&= xn^{x}\Gamma\left(\frac{x}{n}\right)\Gamma\left(\frac{x+1}{n}\right)\cdots \Gamma\left(\frac{x+n-1}{n}\right)\\
&= xf(x)
\end{align}</math>
である。また、
<math>\ln f(x) = x\ln n + \sum_{k=0}^{n-1}\ln \Gamma\left(\frac{x+k}{n}\right)</math>
は凸函数である。
<math>f(1) = n \Gamma\left(\frac{1}{n}\right)\Gamma\left(\frac{2}{n}\right)\cdots \Gamma\left(\frac{n-1}{n}\right)\Gamma(1)</math>
<math>\begin{align}
f(1)^2 &= n^2 \prod_{k=1}^{n-1}\Gamma\left(\frac{k}{n}\right)\Gamma\left(\frac{n-k}{n}\right)\\
&= n^2 \prod_{k=1}^{n-1}\frac{\pi}{\sin \frac{k\pi}{n}}\\
\end{align}</math>
となる。後に証明するが、 <math>\prod_{k=1}^{n-1}\sin \frac{k\pi}{n} = \frac{n}{2^{n-1}}</math> であることを使うと、
<math>f(1)= (2\pi)^{\frac{n-1}{2}} \sqrt{n}</math>
となるから、
<math>\frac{f(x)}{n^x} = \frac{f(1)\Gamma(x)}{n^x} = \frac{(2\pi)^{\frac{n-1}{2}}}{n^{x-\frac{1}{2}}}\Gamma(x) </math>
より、Gaussの乗法公式を得る。一般には <math> x \to nx </math> とした
<math>\Gamma\left(x\right)\Gamma\left(x+\frac{1}{n}\right)\cdots \Gamma\left(x+\frac{n-1}{n}\right) = (2\pi)^{\frac{n-1}{2}} n^{\frac 1 2 - nx} \Gamma(nx)</math>
がGaussの乗法公式と言われる。
Gauss の乗法公式で <math>n=2 </math> の場合は
<math>\Gamma(x)\Gamma\left(x + \frac 1 2\right) = \sqrt{\pi} 2^{1-2x}\Gamma(2x) </math>
となる。これは Legendre の倍数公式と言われる。
最後に、<math>\prod_{k=1}^{n-1}\sin \frac{k\pi}{n} = \frac{n}{2^{n-1}}</math> を証明する。<math>\zeta = e^{\frac{2\pi i}{n}}</math> とする。
<math>z^n - 1 = (z-1)(z-\zeta)\cdots (z-\zeta^{n-1})</math>
と
<math>\frac{z^n - 1}{z-1} = 1+z+z^2 + \cdots + z^{n-1}</math>
より、
<math>1+z+z^2 + \cdots + z^{n-1} = \prod_{k=1}^{n-1}(z-\zeta^k)</math>
となる。ここで、<math>z=1</math> とすると、
<math>n = \prod_{k=1}^{n-1}(1-\zeta^k)</math>
を得る。
<math>1 - \zeta^k = e^{\frac{\pi i k}{n}}\left(e^{-\frac{\pi i k}{n}} - e^{\frac{\pi i k}{n}}\right) = e^{\frac{\pi i k}{n}}\left(-2i\sin{\frac{\pi k}{n}}\right)</math>
であるから、
<math>\prod_{k=1}^{n-1}(1-\zeta^k) = \prod_{k=1}^{n-1}e^{\frac{\pi i k}{n}}\left(-2i\sin{\frac{\pi k}{n}}\right) = 2^{n-1}\prod_{k=1}^{n-1}\sin{\frac{\pi k}{n}} </math>
より、<math>\prod_{k=1}^{n-1}\sin \frac{k\pi}{n} = \frac{n}{2^{n-1}}</math> を得る。
'''Β函数の諸公式'''
<math>\Beta(x,y) = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} </math>
から、
# <math>\Beta(x,y) = \Beta(y,x)</math>
# <math>\Beta(x+1,y) = \frac{x}{x+y}\Beta(x,y)
</math>
# <math>\Beta(1,y) = \frac 1 y</math>
がすぐにわかる。また、2, 3 は例2を証明するために既に証明している。
また、相反公式から、
<math>\Beta(x,1-x) = \frac{\pi}{\sin \pi x} \quad (0 < x < 1)</math>
となる。Legendre の倍数公式から
<math>\Beta\left(x,\frac 1 2 \right) = 2^{2x-1} \frac{\Gamma(x)^2}{\Gamma(2x)} = 2^{2x-1}\Beta(x,x)</math>
となる。
=== 定積分の応用 ===
いくつかの定積分はΓ函数とΒ函数によって表される。例えば、
<math>\int_0^\infty x^p e^{-\alpha x^q} dx = \frac 1 q \alpha^{-\frac{p+1}{q}} \Gamma\left(\frac{p+1}{q}\right) \quad (\alpha > 0, p > -1, q > 0)</math>
<math>\int_0^\frac \pi 2 \sin^p\theta \cos^q\theta d\theta = \frac 1 2 \Beta\left(\frac{p+1}{2},\frac{q+1}{2}\right) \quad (p> -1,q>-1) </math>
<math>\Beta(p,q) = \int_0^\infty \frac{x^{p-1}}{(1+x)^{p+q}}dx \quad (p> 0,q>0)</math>
<math>\int_0^\infty \frac{x^{p-1}}{1+x^q}dx = \frac 1 q \int_0^\infty \frac{t^{\frac p q - 1}}{1+t}dt = \frac 1 q \Beta\left(\frac p q, 1 - \frac p q\right) = \frac{\pi}{q\sin\left(\frac p q \pi\right)} \quad (0<\frac p q < 1)</math>
などがある。
== Gauss の超幾何函数 ==
Gauss の超幾何函数を
<math>F(\alpha, \beta ; \gamma;z) = \sum_{n=0}^{\infty} \frac{(\alpha)_n (\beta)_n}{(\gamma)_n} \frac{z^n}{n!}</math>
で定義する。これは <math>|z| < 1</math> で絶対収束する。また、Gauss の超幾何微分方程式
<math>z(1-z)\frac{d^2w}{dz^2} + (\gamma-(\alpha+\beta+1))\frac{dw}{dz} + \alpha\beta w = 0</math>
の解となる。
Gauss の超幾何函数で様々な函数を表すことができる。例えば、
Legendre 多項式
<math>P_n(z)=F\left(-n,n+1;1 ;\frac{1-z}{2}\right)</math>
Gegenbauer 多項式(超球多項式)
<math>C_n^{(\alpha)}(z)=\frac{(2\alpha)_n}{n!} F\left(-n,n+2\alpha;\alpha+\frac 1 2 ;\frac{1-z}{2}\right)</math>
Tschebyscheff 多項式
<math>\begin{align}T_n(z)&=F\left(-n,n;\frac 1 2 ;\frac{1-z}{2}\right),\\
U_n(z)&=(n+1)F\left(-n,n+2;\frac 3 2 ;\frac{1-z}{2}\right)\end{align}</math>
Jacobi 多項式
<math>P_n^{(\alpha,\beta)}(z)=\frac{(\alpha+1)_n}{n!} F\left(-n,n+\alpha+\beta+1;\alpha+1;\frac{1-z}{2}\right)</math>
完全楕円積分
<math>\begin{align}K(k) &= \int_0^{\frac \pi 2} \frac{d\theta}{\sqrt{1-k^2\sin^2\theta}},\\
E(k) &= \int_0^{\frac \pi 2} {\sqrt{1-k^2\sin^2\theta}}d\theta\end{align}</math>
== 球函数 ==
=== Legendre 函数 ===
Legendre の微分方程式
<math>(1-x^2)\frac{d^2w}{dx^2} - 2x \frac{dw}{dx} + \nu (\nu+1)w = 0</math>
は、<math>z = \frac{1-x}{2}</math> と変換すると、
<math>z(1-z)\frac{d^2w}{dz^2} + (1-2z)\frac{dw}{dz} + \nu(\nu+1)w = 0</math>
となる。これは、Gauss の超幾何微分方程式で、<math>\alpha = \nu+1,\beta = -\nu,\gamma = 1</math> とした場合だから、微分方程式の解は超幾何函数を使って、
<math>w = F(\nu+1,-\nu,1,z) = \sum_{k=0}^\infty \frac{(\nu+1)_k(-\nu)_k}{(k!)^2}\left(\frac{1-x}{2}\right)^k</math>
とかける。これを <math>\nu</math> 次 Legendre 函数 <math>P_\nu(x)</math> という。
次に、<math>P_\nu(x)</math> に線型独立なもう一つの解を定数変化法で求める。
<math>w = P_\nu(x) v(x) </math>
とおいて、Legendre の微分方程式に代入すると、
<math>(1-x^2)P_\nu v'' + \{2(1-x^2)P_\nu' -2xP_\nu \}v' = 0</math>
これは、<math>v'</math> に対する微分方程式として
<math>\frac{dv'}{v'} + \frac{dx\{2(1-x^2)P_\nu'P_\nu-2x{P_\nu}^2 \}}{(1-x^2){P_\nu}^2} = 0</math>
即ち、
<math>\frac{dv'}{v'} + \frac{d[(1-x^2)P_\nu^2]}{(1-x^2){P_\nu}^2} = 0</math>
と変形できる。
これを積分して、
<math>v' = \frac{C}{(1-x^2){P_\nu}^2}</math>
を得る。もう一度積分すると、
<math>v(x) = C\int \frac{dx}{(1-x^2){P_\nu}^2} + C'</math>
となるから、
<math>w(x) = P_\nu(x) v(x) = CP_\nu(x)\int\frac{dx}{(1-x^2){P_\nu}^2} + C' P_\nu(x)</math>
である。今求めているのは、<math>P_\nu(x)</math> に独立な解であるから <math>C' = 0</math> としていい。<math>C = 1</math> とし、積分範囲を <math>\int_\infty^x</math> と取るときの <math>w(x)</math> を第二種 Legendre 函数 <math>Q_\nu(x)</math> と定義する。
すなわち、
<math>Q_\nu(x) = P_\nu(x)\int_\infty^x\frac{dx}{(1-x^2){P_\nu(x)}^2} </math>
である。
=== Legendre 多項式 ===
<math>k > n </math> ならば、<math>(-n)_k = 0 </math>となるから、Legendre 函数 <math>P_\nu(x) </math> は <math>\nu </math> が非負整数 <math>n </math> のとき多項式になる。
<math>P_n(x) = \sum_{k=0}^\infty \frac{(n+1)_k(-n)_k}{(k!)^2}\left(\frac{1-x}{2}\right)^k = \sum_{k=0}^n \frac{(n+1)_k(-n)_k}{(k!)^2}\left(\frac{1-x}{2}\right)^k</math>
Pochhammer 記号について、
<math>(n)_k = n(n+1)\cdots (n+k-1) = \frac{(n+k-1)!}{(n-1)!} </math>
<math>(-n)_k = (-n)(-n+1)\cdots(-n+k-1) = (-1)^kn(n-1)\cdots(n-k+1) = (-1)^k \frac{n!}{(n-k)!}</math> (ただし、<math>k \le n </math> のとき)
となる性質を用いると、
<math>P_n(x) = \sum_{k=0}^n \frac{(n+k)!}{(k!)^2(n-k)!}\left(\frac{x-1}{2}\right)^k </math>
を得る。Legendre 多項式は Rodrigues の公式
<math>P_n(x) = \frac{1}{2^n n!} \frac{d^n}{dx^n} (x^2-1)^n</math>
によっても表される。
実際、
<math>\begin{align}P_n(x) &= \frac{1}{2^n n!} \frac{d^n}{dx^n} \{(x-1)^n(2+x-1)^n\} \\
&= \frac{1}{2^n n!} \frac{d^n}{dx^n}\sum_{k=0}^n \binom{n}{k} 2^{n-k} (x-1)^{n+k} \\
&= \frac{1}{2^n n!} \sum_{k=0}^n \frac{n!}{k!(n-k)!}\frac{(n+k)!}{k!} 2^{n-k} (x-1)^{k} \\
&= \sum_{k=0}^n \frac{(n+k)!}{(k!)^2(n-k)!} \left(\frac{x-1}{2}\right)^k \\
\end{align}</math>
となる。
次に、Legendre 多項式の <math>x</math> の冪での表示を求める。Rodrigues の公式を展開して、
<math>\begin{align}P_n(x) &= \frac{1}{2^n n!} \frac{d^n}{dx^n} (x^2-1)^n \\
&= \frac{1}{2^n n!} \frac{d^n}{dx^n} \sum_{k=0}^n \frac{n!}{k!(n-k)!}(-1)^k x^{2n-2k} \\
&= \frac{1}{2^n} \sum_{k=0}^{\left[\frac n 2 \right]} \frac{(-1)^k}{k!(n-k)!} \frac{(2n-2k)!}{(n-2k)!}x^{n-2k}
\end{align}</math>
ここで、いくつかの項は微分で落ちる。項が残る条件は <math>n - 2k \ge 0</math> で、 <math>k</math> が整数だから、 <math>\left[\frac n 2\right] \ge k</math> である。
さらに、
<math>\begin{align}
P_n(x) &= \frac{1}{2^n} \sum_{k=0}^{\left[\frac n 2 \right]} \frac{(-1)^k(2n-2k)!}{k!(n-k)!(n-2k)!} x^{n-2k} \\
&= \sum_{k=0}^{\left[\frac n 2 \right]} \frac{(-1)^k}{2^k} \frac{(2n-2k)!}{2^{n-k}k!(n-k)!(n-2k)!} x^{n-2k} \\
&= \sum_{k=0}^{\left[\frac n 2 \right]} \frac{(-1)^k}{2^k} \frac{(2n-2k-1)!!}{k!(n-2k)!} x^{n-2k}
\end{align}</math>
として Legendre 多項式の表示が得られる。ここで、<math>(2k)!! = 2^kk!, (2k-1)!! = \frac{(2k)!}{(2k)!!} = \frac{(2k)!}{2^kk!}</math> となることを使った。
Rodrigues の公式に Goursat の公式を使うと、
<math>P_n(x) = \frac{1}{2\pi i} \oint_x \left\{\frac{t^2-1}{2(t-x)}\right\}^n \frac{dt}{t-x}</math>
となる。ここで、<math>\frac{t^2-1}{2(t-x)} = \frac{1}{\zeta}</math> と変換をすると、<math>\zeta t^2 -2t + 2x - \zeta = 0</math> となるから、<math>t</math> について解いて、 <math>t = \frac{1-\sqrt{1-2x\zeta + \zeta^2}}{\zeta} = \frac{1-R}{\zeta}</math> となる。ここで、<math>R = \sqrt{1-2x\zeta + \zeta^2}</math> と置いた。<math>dR = \frac{\zeta - x}{R}d\zeta</math> となるから、<math>t </math> の微分は<math>dt =-\frac{d\zeta}{\zeta^2}(1-R) - \frac{dR}{\zeta} = \frac{1-R-x\zeta}{\zeta^2R}d\zeta </math> となる。<math>t - x = \frac{1-R-x\zeta}{\zeta} </math> であったから、<math>\frac{dt}{t-x} = \frac{d \zeta}{R\zeta}. </math>
<math>P_n(x) = \frac{1}{2\pi i} \oint_0 \frac{1}{\sqrt{1-2x\zeta + \zeta^2}}\frac{d\zeta}{\zeta^{n+1}}</math>
これは、
<math>\frac{1}{\sqrt{1-2xt + t^2}} = \sum_{n=0}^\infty P_n(x) t^n</math>
ということを意味する。すなわち、これが Legendre 多項式の母函数である。
=== Legendre の陪函数 ===
Legendre の陪微分方程式
<math>(1-x^2)\frac{d^2w}{dx^2} - 2x\frac{dw}{dx} + \left\{n(n+1) - \frac{m^2}{1-x^2}\right\} w = 0</math>
の解を求めたい。
Legendre の微分方程式
<math>(1-x^2)\frac{d^2w}{dx^2} - 2x \frac{dw}{dx} + n(n+1)w = 0</math>
で
<math>w = (1-x^2)^{\frac m 2} v</math>
とおいて、Legendre の陪微分方程式に代入すると、
<math>\frac{dw}{dx} = (1-x^2)^{\frac m 2} v' -mx(1-x^2)^{\frac m 2} v</math>
<math>\frac{d^2w}{dx^2} = (1-x^2)^{\frac m 2}v'' - 2mx(1-x^2)^{{\frac m 2}-1}v' + m(1-x^2)^{{\frac m 2}-1} v + m(m -2)x^2(1-x^2)^{{\frac m 2}-2} v</math>
となるから、<math>(1-x^2)^{\frac m 2}</math> で割って、<math>\frac{x^2}{1-x^2} = -1 + \frac{1}{1-x^2}</math> に注意して計算すると、
<math>(1-x^2)v'' - 2(m+1)v' + (n-m)(n+m+1)v = 0</math>
を得る。
次に、Legendre の微分方程式を <math>w</math> の代わりに <math>u</math> とおいて、一回微分すると、
<math>(1-x^2)\frac{d^3u}{dx^3} - 2(1+1)x \frac{d^2u}{dx^2} + \{n(n+1) - 2\}\frac{du}{dx} = 0</math>
もう一回微分すると、
<math>(1-x^2)\frac{d^4u}{dx^3} - 2(1+1+1)x \frac{d^3u}{dx^2} + \{n(n+1) - 2 - 4\}\frac{d^2u}{dx^2} = 0</math>
すなわち、Legendre の微分方程式を <math>m</math> 階微分すると、<math>2(1+2+\cdots +m) = m(m+1)</math> となるから、
<math>(1-x^2)\frac{d^{m+2}u}{dx^{m+2}} - 2(m+1)x \frac{d^{m+1}u}{dx^{m+1}} + (n-m)(n+m+1)\frac{d^mu}{dx^m} = 0</math>
である。
よって、
<math>v = \frac{d^mu}{dx^m}</math>
の関係があることがわかる。ここで、<math>u</math> は Legendre の微分方程式の解だから、
<math>u = P_n(x),Q_n(x)</math>
を代入して、
Legendre の陪微分方程式の解として、
<math>w = (1-x^2)^{\frac m 2}\frac{d^mP_n}{dx^m},(1-x^2)^{\frac m 2}\frac{d^mQ_n}{dx^m}</math>
を得る。この解をLengendre 陪函数として、
<math>P^m_n(x) = (1-x^2)^{\frac m 2}\frac{d^mP_n}{dx^m},\, Q^m_n(x) = (1-x^2)^{\frac m 2}\frac{d^mQ_n}{dx^m}</math>
と定義する。
=== 直交関係 ===
<math>Q(x)</math> を <math>n-1</math> 次以下の次数の多項式とする。このとき、
<math>\int_{-1}^1 Q(x) P_n(x) dx = 0</math>
となる。実際、<math>F = (x^2-1)^n</math> とすれば、
<math>\int_{-1}^1 Q(x) P_n(x) dx = \frac{1}{2^nn!}[QF^{(n-1)} - Q'F^{(n-2)} + \cdots + (-1)^{n-1}Q^{(n-1)}F]_{-1}^1 = 0</math>
となる。
また、
<math>\int_{-1}^1 P_n P_{n+1}' dx = P_nP_{n+1}|_{-1}^1 - \int_{-1}^1 P_n' P_{n+1} dx</math>
となる。ここで、<math>P_n</math> の <math>x^n</math> の係数は <math>\frac{(2n-1)!!}{n!}</math> となる。また、<math>P_{n+1}'</math> の <math>x^n</math> の係数は、<math>\frac{(2(n+1)-1)!!}{(n+1)!}(n+1) = \frac{(2n+1)!!}{n!}</math> となる。よって、<math>n-1</math> 次の多項式 <math>Q</math> が存在して
<math>P_{n+1}' = (2n+1)P_n + Q</math>
と書くことができる。従って、
<math>\int_{-1}^1 P_n P_{n+1}' dx = (2n+1)\int_{-1}^1 (P_n)^2 dx</math>
<math>P_nP_{n+1}|_{-1}^1 - \int_{-1}^1 P_n' P_{n+1} dx = 2</math>
より、
<math>\int_{-1}^1 (P_n)^2 dx = \frac{2}{2n+1}</math>
となる。最終的に、直交関係
<math>\int_{-1}^1 P_m(x) P_n(x) dx = \frac{2}{2m+1}\delta_{mn}</math>
を得る。
Legendre の陪函数の直交性は
<math>\int_{-1}^1 P^m_k P^m_l dx = \frac{(k+m)!}{(k-m)!} \frac{2}{2k+1}\delta_{kl}
</math>
となる。
<math>(1-x^2)v'' - 2(m+1)v' + (n-m)(n+m+1)v = 0</math>
で <math>m \to m-1</math> に置き換えると、
<math>(1-x^2)v'' - 2mv' + (n-m+1)(n+m)v = 0</math>
となる。ここで、<math>v = D^{m-1}P_n</math> を代入して <math>(1-x^2)^{m-1}</math> を掛けると
<math>(1-x^2)^mD^{m+1}P_n - 2m(1-x^2)^{m-1}D^mP_n + (n-m+1)(n+m)(1-x^2)^{m-1}D^{m-1}P_n = 0</math>
<math>D[(1-x^2)^mD^mP_n] + (n-m+1)(n+m)(1-x^2)^{m-1}D^{m-1}P_n = 0</math>
となる。部分積分をして
<math>\begin{align}
\int_{-1}^1 P^m_k P^m_l dx &= \int_{-1}^1 (1-x^2)^m D^mP_k D^mP_l dx\\
&= (k-m+1)(k+m)\int_{-1}^1 (1-x^2)^{m-1} D^{m-1}P_k D^{m-1}P_l dx \\
&= \cdots \\
&= \frac{(k+m)!}{(k-m)!} \int_{-1}^1 P_kP_l dx \\
&= \frac{(k+m)!}{(k-m)!} \frac{2}{2k+1}\delta_{kl}
\end{align}</math>
を得る。
=== 球面調和函数 ===
Laplace 方程式
<math>\triangle \Psi = 0</math>
を球座標で表すと、
<math>\frac{1}{r^2}\frac{\partial}{\partial r} \left(r^2 \frac{\partial \Psi}{\partial r} \right) + \frac{1}{r^2} \Lambda \Psi = 0</math>
となる。だたし、
<math>\Lambda = \frac{1}{\sin \theta} \frac{\partial}{\partial \theta} \left(\sin \theta \frac{\partial} {\partial \theta} \right) + \frac{1}{\sin^2\theta}\frac{\partial^2}{\partial \varphi^2}</math>
である。<math>\Psi</math> が <math>C^2</math> 級函数で、
<math>\Psi(r,\theta, \varphi) = r^nY_n(\theta,\varphi)</math>
の形であるとき、<math>Y_n(\theta, \varphi)</math> を <math>n</math> 次の球面調和函数という。これを Laplace 方程式に代入すると、<math>Y_n(\theta, \varphi)</math> の方程式として
<math>-\Lambda Y_n = n(n+1)Y_n</math>
すなわち、
<math>\frac{1}{\sin \theta} \frac{\partial}{\partial \theta} \left(\sin \theta \frac{\partial Y_n} {\partial \theta} \right) + \frac{1}{\sin^2\theta}\frac{\partial^2 Y_n}{\partial \varphi^2} + n(n+1)Y_n = 0</math>
を得る。
<math>Y_n(\theta, \varphi) = \Theta(\theta)\Phi(\varphi)</math>
と変数分離を仮定して、
<math>\frac{1}{\Theta \sin \theta} \frac{d}{d\theta}\left(\sin \theta \frac{d\Theta}{d\theta}\right) + n(n+1) = -\frac{1}{\Phi \sin^2\theta}\frac{d^2\Phi}{d\varphi^2}</math>
あるいは、
<math>\frac{\sin \theta}{\Theta} \frac{d}{d\theta}\left(\sin \theta \frac{d\Theta}{d \theta}\right) + n(n+1) \sin^2 \theta = -\frac{1}{\Phi}\frac{d^2 \Phi}{d \varphi^2} = m^2</math>
となる。両辺は <math>\theta ,\varphi</math> のいずれにも依存しないから、定数であるからこれを <math>m^2</math> と置くと、
<math>\frac{d^2 \Phi}{d \varphi^2} = -m^2\Phi</math>
この解は、
<math>\Phi = C e^{im \varphi}</math>
となる。<math>\Phi(\varphi)</math> は一価函数であるから、<math>\Phi(\varphi + 2\pi) = \Phi(\varphi)</math> より、 <math>m</math> は整数である。
次に、 <math>\Theta</math> に関する微分方程式
<math>\frac{1}{\sin\theta} \frac{d}{d \theta}\left(\sin \theta \frac{d \Theta}{d \theta}\right) + n(n+1)\Theta - \frac{m^2}{\sin^2\theta}\Theta = 0</math>
は、 <math>x = \cos \theta</math> と変換すると、
<math>\frac{d}{dx}\left\{(1-x^2)\frac{d\Theta}{dx}\right\} + \left\{n(n+1)- \frac{m^2}{1-x^2} \right\}\Theta = 0</math>
となる。これは、Legendre の陪微分方程式だから、
<math>\Theta = P^m_n(x)</math>
あるいは、
<math>\Theta(\theta) = P^m_n(\cos \theta)</math>
を得る。ここで、<math>\Theta(\theta) = Q^m_n(\cos \theta)</math> も陪微分方程式の解であるが、<math>\theta = 0</math> で連続ではない。
結局、<math>n</math> 次球面調和函数として、
<math>Y_n(\theta,\varphi) = P_n(\cos\theta), P^m_n(\cos\theta) e^{i m \varphi}</math> (<math>m = -n,-n+1,\cdots , n</math>)
の <math>2n+1</math> 個の解を得る。
== 円柱函数 ==
=== Bessel 函数 ===
電磁気学や量子力学などで、微分方程式
<math>\frac{d^2w}{dz^2} + \frac 1 z \frac{dw}{dz} + \left(1 - \frac{\nu^2}{z^2}\right)w = 0 </math>
を解く必要が発生する。この微分方程式の解を Bessel 函数という。
<math>w = \sum_{k=0}^\infty c_k z^{\rho + k}</math>
の形の級数展開を仮定する。
このとき、
<math> \frac{d^2w}{dz^2} =\sum_{k=0}^\infty (\rho + k)(\rho + k - 1)c_k z^{\rho + k-2} </math>
<math> \frac 1 z \frac{dw}{dz} =\sum_{k=0}^\infty (\rho + k)c_k z^{\rho + k-2} </math>
であるから、微分方程式は、
<math>\sum_{k=0}^\infty \left[\{(\rho+k)^2 - \nu^2\}c_kz^{\rho+k-2} + c_kz^{\rho + k}\right] = 0</math>
となる。
<math>\frac{1}{z^2}</math> の項は、<math>(\rho^2 - \nu^2)c_0 = 0</math> であるから、<math>\rho = \pm \nu</math>.
<math>\frac{1}{z}</math> の項は、<math>\{(\rho+1) - \nu^2\}c_1 = 0</math> であるから、<math>c_1 = 0</math>.
<math>k \ge 0</math> について、<math>-c_{k-2} = \{(\rho+k)^2 - \nu^2\}c_k</math> を得る。これより、<math>c_{2k+1} = 0</math> がわかる。
<math>\rho = \nu</math> のときは、
<math>c_{2k} = \frac{-c_{2(k-1)}}{2(\nu+k)\cdot 2k}</math>
であるから、
<math>c_{2k} = \frac{(-1)^k}{2^{2k}k!(\nu+k)(\nu+k-1)\cdots(\nu+1)} = \frac{(-1)^k\Gamma(\nu+1)}{2^{2k}k!\Gamma(\nu+k+1)}</math>
である。すなわち、
<math>w = c_0\sum_{k=0}^\infty \frac{(-1)^k\Gamma(\nu+1)}{2^{2k}k!\Gamma(\nu+k+1)} z^{2k}</math>
ここで、<math>c_0 = \frac{1}{2^{\nu} \Gamma(\nu+1)}</math> に選んだものを <math>\nu</math> 次 Bessel 函数 <math>J_\nu(z)</math> とする。
すなわち、
<math>J_\nu(z) = \sum_{k=0}^\infty \frac{(-1)^k}{k!\Gamma(\nu+k+1)} \left(\frac z 2\right)^{2k+\nu} </math>
である。<math>\rho = -\nu</math> のときも同様に計算することで、同じ式になる。
==== 性質 ====
負の整数 <math>-n</math> 次の Bessel 函数について、
<math>J_{-n}(z) = \sum_{k=n}^\infty \frac{(-1)^k}{k!\Gamma(-n+k+1)} \left(\frac z 2\right)^{2k-n} = \sum_{k=0}^\infty \frac{(-1)^{k+n}}{(k+n)!\Gamma(k+1)} \left(\frac z 2\right)^{2k+n} = (-1)^nJ_{n}(z) </math>
Bessel 函数の母函数は、
<math>\begin{align}\sum_{n=-\infty}^\infty J_n(z)t^n &= \sum_{n=0}^\infty J_n(z)t^n + \sum_{n=1}^\infty (-1)^nJ_n(z)t^{-n} \\
&= \sum_{n=0}^\infty \sum_{m=0}^\infty \frac{(-1)^m}{m!(n+m)!} \left(\frac z 2\right)^{2m+n}t^n + \sum_{n=1}^\infty \sum_{l=0}^\infty \frac{(-1)^{l+n}}{l!(n+l)!} \left(\frac z 2\right)^{2l+n}t^{-n}
\end{align}</math>
ここで、第一の総和で、<math>l = m + n</math> 、第二の総和で、<math>m = l + n</math> と置くと、
<math>\begin{align}\sum_{n=-\infty}^\infty J_n(z)t^n &=
\sum_{m=0}^\infty \sum_{l=m}^\infty \frac{(-1)^m}{m!l!} \left(\frac z 2\right)^{m+l}t^{l-m} + \sum_{l=0}^\infty \sum_{m=l+1}^\infty \frac{(-1)^{m}}{l!m!} \left(\frac z 2\right)^{l+m}t^{l-m}\\
&= \sum_{m,l = 0}^{\infty} \frac{1}{m!l!} \left(\frac{zt}{2}\right)^l \left(-\frac{z}{2t}\right)^m \\
&= \sum_{l = 0}^{\infty} \frac{1}{l!} \left(\frac{zt}{2}\right)^l \sum_{m = 0}^{\infty} \frac{1}{m!}\left(-\frac{z}{2t}\right)^m \\
&= e^{\frac z 2 \left(t - \frac 1 t\right)}
\end{align}</math>
となる。
また、母函数を <math>t^{n+1}</math> で割ると、
<math>\frac{e^{\frac z 2 \left(t - \frac 1 t\right)}}{t^{n+1}} = \frac{J_n(z)}{t} + \sum_{k=-\infty,k \neq n}^\infty J_k(z)t^{k-n-1} </math>
となるから、<math>t</math> について原点反時計回りに積分すると、
<math>J_n(z) = \frac{1}{2\pi i} \oint_0 \frac{e^{\frac z 2 \left(t - \frac 1 t\right)}}{t^{n+1}} dt</math>
が得られる。<math>t = e^{i\theta}</math> とすると、
<math>J_n(z) = \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{z\frac{e^{i\theta}- e^{-i\theta}}{2}}e^{-in\theta}d\theta = \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{iz\sin\theta - in\theta}d\theta = \frac{1}{2\pi}\int_{-\pi}^{\pi}[\cos(z\sin\theta - n\theta) + i\sin(z\sin\theta - n\theta)]d\theta</math>
ここで、<math>\sin(z\sin\theta - n\theta)</math> は奇函数だから積分は0。<math>\cos(z\sin\theta - n\theta)</math> は偶函数だから、
<math>J_n(z) = \frac 1 \pi \int_0^\pi\cos(n\theta - z\sin\theta)d\theta</math>
を得る。Bessel はこの積分により Bessel 函数を定義した。
また、
<math>J_n(z) = \frac{1}{2\pi} \int_{-\pi}^{\pi} e^{iz \sin \theta - i n \theta} d\theta</math>
で、<math>\theta = \varphi + \frac \pi 2</math> と変換すると、積分範囲は被積分函数の周期性より変更する必要はないから、
<math>J_n(z) = \frac{1}{2\pi i^n} \int_{-\pi}^{\pi} e^{iz \cos \varphi}(\cos n\varphi - i \sin n\varphi) d\varphi</math>
となる。前のように奇函数と偶函数の性質を利用すると、
Hansen の積分表示
<math>J_n(z) = \frac{1}{\pi i^n} \int_{0}^{\pi} e^{iz \cos\varphi}\cos n \varphi \, d\varphi</math>
を得る。
母函数に<math>t=1</math> を代入すると、
<math>\sum_{k=-\infty}^{\infty} J_k(z) = 1</math>
あるいは、
<math>J_0(z) + 2\sum_{k=1}^\infty J_{2k}(z) =1</math>
を得る。
<math>e^{\frac{x+y}{2}(t-1/t)} = e^{\frac{x}{2}(t-1/t)}e^{\frac{y}{2}(t-1/t)}</math>
であるから、Bessel 函数の加法定理
<math>J_n(x+y) = \sum_{m=-\infty}^\infty J_{n-m}(x)J_m(y)</math>
を得る。
上昇演算子と <math>\overset{(\nu)}{T} </math> 下降演算子 <math>\underset{(\nu)}{T} </math> を次のように定義する。
<math>\overset{(\nu)}{T} = z^\nu\frac{d}{dz}z^{-\nu} =\frac{d}{dz} -\frac{\nu}{z} </math>
<math>\underset{(\nu)}{T} = z^{-\nu}\frac{d}{dz}z^\nu = \frac{d}{dz} + \frac{\nu}{z} </math>
ここで、右辺は、<math>\overset{(\nu)}{T}f = z^\nu\frac{d}{dz}(z^{-\nu}f) = z^\nu\left(-\nu z^{-\nu-1}f+ z^{-\nu}\frac{df}{dz} \right) =\left(\frac{d}{dz} -\frac{\nu}{z}\right)f </math> から成り立つ。下降演算子についても同様である。
これを Bessel 函数に作用させると、
<math>\begin{align}\overset{(\nu)}{T} J_\nu(z) &= z^\nu \frac{d}{dz} \sum_{k=0}^\infty \frac{(-1)^k z^{2k}}{2^{2k+\nu}k!\Gamma(\nu+k+1)} \\
&= z^\nu \sum_{k=1}^\infty \frac{(-1)^k z^{2k-1}}{2^{2k+\nu-1}(k-1)!\Gamma(\nu+k+1)} \\
&= -\sum_{k=0}^\infty \frac{(-1)^k z^{2k+1+\nu}}{2^{2k+\nu+1}k!\Gamma(\nu+1+k+1)} \\
&= -J_{\nu+1}(z)
\end{align} </math>
となる。また、
<math>\begin{align}\underset{(\nu)}{T} J_\nu(z) &= z^{-\nu} \frac{d}{dz} \sum_{k=0}^\infty \frac{(-1)^k z^{2k+2\nu}}{2^{2k+\nu}k!\Gamma(\nu+k+1)} \\
&= z^{-\nu} \sum_{k=0}^\infty \frac{(-1)^k (k+\nu) z^{2k+2\nu-1}}{2^{2k+\nu-1}k!\Gamma(\nu+k+1)} \\
&= \sum_{k=0}^\infty \frac{(-1)^k z^{2k+\nu-1}}{2^{2k+\nu-1}k!\Gamma(\nu+k)} \\
&= J_{\nu-1}(z)
\end{align} </math>
である。すなわち、
<math>J^'_\nu(z) - \frac{\nu}{z}J_\nu(z) = -J_{\nu+1}(z)</math>
<math>J^'_\nu(z) + \frac{\nu}{z}J_\nu(z) = J_{\nu-1}(z) </math>
二式を辺々加えて、
<math>2J^'_{\nu}(z) = J_{\nu-1}(z) - J_{\nu+1}(z) </math>
または、辺々引いて、
<math>\frac{2\nu}{z}J_\nu(z) = J_{\nu-1}(z) + J_{\nu+1}(z) </math>
を得る。
ところで、明らかに
<math>\underset{(\nu+1)}{T}\overset{(\nu)}{T}J_\nu(z) = - J_\nu(z)</math>
となる。この式は二階の微分方程式であるから、Bessel の微分方程式に帰着するはずである。実際、左辺を展開すると、
<math>\underset{(\nu+1)}{T}\overset{(\nu)}{T} = \left(\frac{d}{dz} +\frac{\nu+1}{z}\right) \left(\frac{d}{dz} -\frac{\nu}{z}\right) = \frac{d^2}{dz^2} +\frac{1}{z}\frac{d}{dz} - \frac{\nu^2}{z^2} </math>
となる。逆に考えると、昇降演算子とは微分方程式を因数分解したものだとも考えられる。
=== 第二種 Bessel 函数 ===
<math>\nu</math> が非整数のときは、<math>J_\nu(z),J_{-\nu}(z)</math> が独立な2解を与えるが、整数のときは、<math>J_{-n}(z) = (-1)^nJ_{n}(z) </math> という関係があるから、独立ではない。そこで、位数 <math>n</math> のときの Bessel の微分方程式の独立なもうひとつの解が存在する。Bessel の微分方程式を <math>\nu </math> で偏微分すれば、
<math>\frac{d^2}{dz^2} \left.\left(\frac{\partial J_\nu(z)} {\partial \nu}\right) \right|_{\nu=n} + \frac 1 z \frac{d}{dz}\left.\left(\frac{\partial J_\nu(z)} {\partial \nu}\right) \right|_{\nu=n} + \left(1 - \frac{n^2}{z^2}\right) \left.\left(\frac{\partial J_\nu(z)} {\partial \nu}\right) \right|_{\nu=n} = 0 </math>
となるから、<math>\left.\left(\frac{\partial J_\nu(z)} {\partial \nu} \right) \right|_{\nu=n} </math> は微分方程式の解である。<math>\left.\left(\frac{\partial J_{-\nu}(z)} {\partial \nu} \right) \right|_{\nu=n} </math> も同じ微分方程式を満たすから、その線形結合として、
<math>Y_n(z) = \frac 1 \pi \left(\left.\left(\frac{\partial J_\nu(z)} {\partial \nu}\right) \right|_{\nu=n} - (-1)^n \left.\left(\frac{\partial J_{-\nu(z)}} {\partial \nu} \right) \right|_{\nu=n} \right) </math>
を定義すると、<math>J_n (z) </math> に独立な解を与える。非整数の <math>\nu </math> に対しては、
<math>Y_\nu (z) = \frac{\cos \nu \pi J_\nu (z) - J_{-\nu} (z)}{\sin \nu \pi} </math>
と定義すると、 <math>\nu \rightarrow n </math> の極限として、 <math>Y_n(z) </math> を得ることができる。
第一種、第二種 Hankel 函数をそれぞれ
<math>H^{(1)}_\nu(z) = J_\nu(z) + i Y_\nu(z)</math>
<math>H^{(2)}_\nu(z) = J_\nu(z) - i Y_\nu(z) </math>
で定義する。
== 楕円積分と楕円函数 ==
第一種完全楕円積分 <math>K(k)</math> と第二種完全楕円積分 <math>E(k)</math> は
<math>\begin{align}K(k) &= \int_0^{\frac \pi 2} \frac{d\theta}{\sqrt{1-k^2\sin^2\theta}},\\
E(k) &= \int_0^{\frac \pi 2} {\sqrt{1-k^2\sin^2\theta}}d\theta\end{align}</math>
で定義される。
Taylor 展開して、
<math>\begin{align}K(k) &= \int_0^{\frac \pi 2} \frac{d\theta}{\sqrt{1-k^2\sin^2\theta}} \\
&= \int_0^{\frac \pi 2} \sum_{n=0}^\infty \binom{-\frac 1 2}{n}(-1)^n k^{2n}\sin^{2n}\theta d\theta \\
&= \sum_{n=0}^\infty \frac{(2n-1)!!}{{(2n)!!}}k^{2n}\int_0^{\frac \pi 2}\sin^{2n}\theta d\theta \\
&= \frac \pi 2 \sum_{n=0}^\infty \left(\frac{(2n-1)!!}{{(2n)!!}}\right)^2 k^{2n} \\
\end{align}</math>
<math>\begin{align}E(k) &= \int_0^{\frac \pi 2} {\sqrt{1-k^2\sin^2\theta}}d\theta \\
&= \int_0^{\frac \pi 2} \sum_{n=0}^\infty \binom{\frac 1 2}{n}(-1)^n k^{2n}\sin^{2n}\theta d\theta \\
&= \sum_{n=0}^\infty \frac{-(2n-1)!!}{{(2n-1)(2n)!!}} k^{2n}\int_0^{\frac \pi 2}\sin^{2n}\theta d\theta \\
&= \frac \pi 2 \sum_{n=0}^\infty \left(\frac{(2n-1)!!}{{(2n)!!}}\right)^2 \frac{k^{2n}}{1-2n} \\
\end{align}</math>
となる。あるいは、超幾何函数を使うと、
<math>K(k) = \frac \pi 2 F\left(\frac 1 2, \frac 1 2; 1; k^2 \right)</math>
<math>E(k) = \frac \pi 2 F\left(\frac 1 2, -\frac 1 2; 1; k^2 \right)</math>
となる。この変形に、
<math>\left(\frac 1 2 \right)_n = \left(\frac{1}{2}\right)\left(\frac{1+2}{2}\right)\cdots \left(\frac{1+2n-2}{2}\right) = \frac{(2n-1)
!!}{2^n}</math>
<math>\left(-\frac 1 2 \right)_n = \left(-\frac{1}{2}\right)\left(\frac{1}{2}\right)\left(\frac{1+2}{2}\right)\cdots \left(\frac{1+2n-4}{2}\right) = -\frac{(2n-3)
!!}{2^n} </math>
を使う。
=== Theta函数 ===
<math>\vartheta(z,\tau) = \sum_{n=-\infty}^{\infty} e^{\pi in^2\tau + 2\pi inz}</math>
<math>\vartheta_{01}(z, \tau) = \sum_{n=-\infty}^{\infty} e^{\pi in^2\tau + 2\pi in\left(z+\frac 1 2\right)} = \vartheta\left(z+\frac 1 2, \tau\right)</math>
<math>\vartheta_{10}(z, \tau) = \sum_{n=-\infty}^{\infty} e^{\pi i\left(n + \frac 1 2 \right)^2\tau + 2\pi i\left(n+\frac 1 2\right)z} = e^{\frac 1 4 \pi i \tau + \pi i z}\vartheta\left(z+\frac 1 2, \tau\right)</math>
<math>\vartheta_{11}(z, \tau) = \sum_{n=-\infty}^{\infty} e^{\pi i\left(n + \frac 1 2 \right)^2\tau + 2\pi i\left(n+\frac 1 2\right)\left(z+\frac 1 2\right)} = e^{\frac 1 4 \pi i \tau + \pi i \left(z + \frac 1 2\right)}\vartheta\left(z+\frac 1 2, \tau\right)</math>
と定義する。<math>\vartheta_{00}(z,\tau) = \vartheta(z,\tau)
</math> とする。
<math>\vartheta(z+1,\tau) = \vartheta(z,\tau)</math>
<math>\vartheta(z+\tau,\tau) = e^{-\pi i (\tau + 2z)}\vartheta(z,\tau)</math>
さらに、
<math>\vartheta_{00}(z+1,\tau) = \vartheta_{00}(z,\tau)</math>
<math>\vartheta_{01}(z+1,\tau) = \vartheta_{01}(z,\tau)</math>
<math>\vartheta_{10}(z+1,\tau) = -\vartheta_{10}(z,\tau)</math>
<math>\vartheta_{11}(z+1,\tau) = -\vartheta_{11}(z,\tau)</math>
また、
<math>\vartheta_{00}(z+\tau,\tau) = e^{-\pi i (\tau + 2z)}\vartheta_{00}(z,\tau)</math>
<math>\vartheta_{01}(z+\tau,\tau) = -e^{-\pi i (\tau + 2z)} \vartheta_{01}(z,\tau)</math>
<math>\vartheta_{10}(z+\tau,\tau) = e^{-\pi i (\tau + 2z)}\vartheta_{10}(z,\tau)</math>
<math>\vartheta_{11}(z+\tau,\tau) = -e^{-\pi i (\tau + 2z)} \vartheta_{11}(z,\tau)</math>
<math>\vartheta_{00}\left(z+\frac 1 2,\tau\right) = \vartheta_{01}(z,\tau)</math>
<math>\vartheta_{01}\left(z+\frac 1 2,\tau\right) = \vartheta_{00}(z,\tau)</math>
<math>\vartheta_{10}\left(z+\frac 1 2,\tau\right) = -\vartheta_{11}(z,\tau)</math>
<math>\vartheta_{11}\left(z+\frac 1 2,\tau\right) = -\vartheta_{10}(z,\tau)</math>
=== 楕円函数 ===
Jacobi の楕円函数を
<math>\operatorname{sn} u = -\frac{\vartheta_{00} \vartheta_{11}(\zeta)}{\vartheta_{10}\vartheta_{01}(\zeta)}</math>
<math>\operatorname{cn} u = \frac{\vartheta_{01} \vartheta_{10}(\zeta)}{\vartheta_{10}\vartheta_{01}(\zeta)}</math>
<math>\operatorname{dn} u = \frac{\vartheta_{01} \vartheta_{00}(\zeta)}{\vartheta_{00}\vartheta_{01}(\zeta)}</math>
で定義する。ただし、<math>k = \left(\frac{\vartheta_{10}}{\vartheta_{00}}\right)^2</math> ,<math>u = \pi \vartheta_{00}^2 \zeta</math> である。
第一種不完全楕円積分<math>u(x) = \int_{0}^{x} \frac{dz}{\sqrt{1-z^2} \sqrt{1-l^2z^2}} (l \in [0, 1])</math>を用いると、
<math>\operatorname{sn} x = u^{-1} (x)</math>
<math>\operatorname{cn} x = \sqrt{1 - ( \operatorname{sn} x )^2 }</math>
<math>\operatorname{dn} x = \sqrt{1 - (l \operatorname{sn} x )^2 }</math>
と定義することもできる。
定義より
<math>( \operatorname{sn} x )^2 + ( \operatorname{cn} x )^2 = 1</math>
<math>( \operatorname{sn} x )^2 + ( l \operatorname{dn} x )^2 = 1</math>
は直ちに成り立つ。
また、以下の加法定理が成り立つ。
<math>\operatorname{sn} (x+y) = \frac{\operatorname{sn} x \operatorname{cn} y \operatorname{dn} y - \operatorname{sn} y \operatorname{cn} x \operatorname{dn} x}{1-(l\operatorname{sn} x \operatorname{sn} y)^2}</math>
<math>\operatorname{cn} (x+y) = \frac{\operatorname{cn} x \operatorname{cn} y - \operatorname{sn} x \operatorname{sn} y \operatorname{dn} x \operatorname{dn} y}{1 - (l \operatorname{sn} x \operatorname{sn} y)^2}</math>
<math>\operatorname{dn} (x+y) = \frac{\operatorname{dn} x \operatorname{dn} y - l^2 \operatorname{sn} x \operatorname{sn}y \operatorname{cn} x \operatorname{cn} y}{1-(l\operatorname{sn} x \operatorname{sn} y)^2}</math>
それぞれの函数の微分は以下のようになる。
<math>\frac{d}{dx} \operatorname{sn} x = \operatorname{cn} x \operatorname{dn} x</math>
<math>\frac{d}{dx} \operatorname{cn} x = - \operatorname{sn} x \operatorname{dn} x</math>
<math>\frac{d}{dx} \operatorname{dn} x = -l^2 \operatorname{sn} x \operatorname{cn} x</math>
先ほどの第一種不完全楕円積分の式において、<math>l = 0</math>を代入すると<math>u (x) = \int_{0}^{x} \frac{dz}{\sqrt{1-z^2}} = \arcsin x</math>となる。このとき、<math>\operatorname{sn} x = \sin x, \operatorname{cn} x = \cos x</math>が恒等的に成り立つ。
今度は<math>l=1</math>を代入すると、<math>u(x) = \int_{0}^{x} \frac{dz}{1-z^2} = \mathrm{artanh} x</math>となる。このとき、<math>\operatorname{sn} x = \tanh x, \operatorname{cn} x = \operatorname{dn} x = \frac{1}{\cosh x}</math>が恒等的に成り立つ。
すなわち、三角関数と双曲線関数は楕円函数の一種である。
== 脚注 ==
=== 注釈 ===
{{Notelist}}
{{Reflist}}
=== 参考文献 ===
* 寺沢寛一『自然科学者のための数学概論(増訂版)』岩波書店、1983年。
* 高木貞治『定本 解析概論』岩波書店、2010年。
* 犬井鉄郎『特殊函数』岩波書店、1962年。
{{stub}}
{{DEFAULTSORT:とくしゆかんすう}}
[[Category:物理数学]]
cxliz43k9smlmduroko4orvrvnncqn8