小数の階乗は、**ガンマ関数**を使って求めることができます。ガンマ関数は、通常の階乗を連続的に拡張したものです。
---
## 1. ガンマ関数の定義
ガンマ関数 \(\Gamma(z)\) は、次の積分で定義されます:
\[
\Gamma(z) = \int_0^{\infty} t^{z-1} e^{-t} \,dt
\]
この関数は、正の整数に対して次の性質を持ちます:
\[
\Gamma(n) = (n-1)!
\]
したがって、小数の階乗も次のように計算できます:
\[
x! = \Gamma(x+1)
\]
---
## 2. 例:\(\frac{1}{2}\) の階乗
有名な例として、\(\frac{1}{2}\) の階乗(\(\Gamma\left(\frac{3}{2}\right)\))は次のように求められます。
\[
\Gamma\left(\frac{3}{2}\right) = \frac{1}{2} \Gamma\left(\frac{1}{2}\right)
\]
また、\(\Gamma\left(\frac{1}{2}\right)\) は以下のように計算できます:
\[
\Gamma\left(\frac{1}{2}\right) = \sqrt{\pi}
\]
したがって:
\[
\frac{1}{2}! = \frac{\sqrt{\pi}}{2} \approx 0.886
\]
---
## 3. Pythonで小数の階乗を計算する方法
Pythonの `scipy` ライブラリの `gamma` 関数を使って、小数の階乗を計算できます。
```python
from scipy.special import gamma
# 小数の階乗を計算
x = 0.5
factorial_x = gamma(x + 1)
print(f"{x}! =", factorial_x)
```
### 出力結果
```plaintext
0.5! = 0.886226925452758
```
---
## 4. 近似計算方法(スターリングの近似式)
スターリングの近似式を使って、階乗の近似値を求めることもできます:
\[
n! \approx \sqrt{2\pi n}\left(\frac{n}{e}\right)^n
\]
---
## 5. まとめ
- 小数の階乗は**ガンマ関数**で定義される。
- 定義は積分で与えられ、\(x! = \Gamma(x+1)\) で計算可能。
- Pythonでは `scipy.special.gamma` 関数を使用。
- 特殊例として \(\frac{1}{2}!\) は \(\frac{\sqrt{\pi}}{2}\)。