【Python演算処理】「N次球概念導入による円/球関係の数理の統合」？

* (2021年7月30日)同心環Tagに移行。

子供の頃から「<font color=red>円周や円の面積や球の表面積や体積を求める式</font>」と**半径**(Radius)と**直径**(Diameter)が裏側でどう繋がっているか気になって仕方がありませんでした。そして、とうとう…

#微積分概念導入による部分的解決

[【Python演算処理】半径・直径・円周長・円の面積・球の表面積・球の体積の計算上の往復](https://qiita.com/ochimusha01/items/e180451a210227bb19a5)

やがて微積分概念を知り、以下を連続的に考えられる様になりました。まぁ面倒な検算は全てコンピューターにやらせてしまえばいいのです。

**半径rの円の面積πr^2 ⇄ 円周長2πr**

```python
import sympy as sp
r,f,g,h = sp.symbols('r,f,g,h')

#元関数
f=sp.pi*r**2

#半径rの円の面積（pi*r^2）をrで微分すると
#円周の長さ（2*pi*r）となる。
g=sp.diff(f,r,1)

#逆に円周の長さ（2*pi*r）をrで積分すると
#半径rの円の面積（pi*r^2）になる。
h=sp.integrate(g,r)

#画面表示
sp.init_printing()
display(f) 
print(sp.latex(f))
display(g) 
print(sp.latex(g))
display(h) 
print(sp.latex(h))
```
元関数

```math
\pi r^{2}
```
微分結果

```math
2 \pi r
```
再積分結果

```math
\pi r^{2}
```
**半径rの球の体積（4/3*pi*r^3） ⇄ 球の表面積（4*pi*r^2）**

```python
import sympy as sp
r,f,g,h = sp.symbols('r,f,g,h')

#元関数
f=sp.Rational(4,3)*sp.pi*r**3

#半径rの球の体積（4/3*pi*r^3）をrで微分すると
#球の表面積（4*pi*r^2）となる。
g=sp.diff(f,r,1)

#逆に球の表面積（4*pi*r^2）をrで積分すると
#半径rの球の体積（4/3*pi*r^3）となる。
h=sp.integrate(g,r)

#画面表示
sp.init_printing()
display(f) 
print(sp.latex(f))
display(g) 
print(sp.latex(g))
display(h) 
print(sp.latex(h))
```
元関数

```math
\frac{4 \pi r^{3}}{3}
```
微分結果

```math
4 \pi r^{2}
```
再積分結果

```math
\frac{4 \pi r^{3}}{3}
```
ちなみに引数の変遷は所謂「**微積分における冪乗算の不定積分公式**」通り。

```math
\int x^b dx=\frac{1}{β+1} x^{β+1}
```
ただしこの計算式にはβ=-1の時に分母が0になる問題があり、実際には別の計算方法で代用されています。この話も別途奥が深い…
[【数理考古学】冪乗算(Exponentiation)の微積分](https://qiita.com/ochimusha01/items/0bd18370cfa96e83347a)

```python
import sympy as sp
a,x,f,g,h = sp.symbols('a,x,f,g,h,i,j')

#元関数
f=a**x

#f'(x)一階微分
g=sp.diff(f,r,1)

#f''(x)二階微分
h=sp.diff(f,r,2)

#f'(x)一階積分
i=sp.integrate(g,r)

#f''(x)二階積分
j=sp.integrate(i,r)

#画面表示
sp.init_printing()
display(f) 
print(sp.latex(f))
display(g) 
print(sp.latex(g))
display(h) 
print(sp.latex(h))
display(i) 
print(sp.latex(i))
display(j) 
print(sp.latex(j))
```
元関数

```math
a^{x}
```
一階微分

```math
a^{x} \log{\left(a \right)}
```
二階微分

```math
a^{x} \log{\left(a \right)}^{2}
```
一階積分

```math
\begin{cases} \frac{a^{x}}{\log{\left(a \right)}} & \text{for}\: \log{\left(a \right)} \neq 0 \\x & \text{otherwise} \end{cases}
```
二階積分

```math
\begin{cases} \begin{cases} \frac{a^{x}}{\log{\left(a \right)}^{2}} & \text{for}\: \log{\left(a \right)}^{2} \neq 0 \\\frac{x}{\log{\left(a \right)}} & \text{otherwise} \end{cases} & \text{for}\: \left(a \geq 0 \wedge a < 1\right) \vee a > 1 \\\frac{x^{2}}{2} & \text{otherwise} \end{cases}
```
さらには球の**表面積**<font color=purple>4πr^2</font>をもう１回微分すると得られる<font color=purple>8πr</font>なる式に邂逅して困惑が広がります。え、どういう事、それ…

[面積の微分はどこの長さ？ - Biglobe](http://www7b.biglobe.ne.jp/~math-tota/su2/bibun.htm)
[球の体積を微分すると、球の表面積になりますが…](https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q104761070?__ysp=OM%2BAcg%3D%3D)

#N次元球概念導入による完全解決

そしてとうとう今月(2021年3月)になって辿り着いたのがこの概念。調べた限りでは、どうやら大学数学では「**つまらない一般教養**」の範囲に過ぎないらしい？

[【Python演算処理】半径・直径・円周長・円の面積・球の表面積・球の体積の計算上の往復](https://qiita.com/ochimusha01/items/e180451a210227bb19a5)

①式$c_n = \frac{\pi^{\frac{n}{2}}}{\Gamma(\frac{n}{2}+1)}$に従って、半径rのn次元球の体積は $c_n r^n$、表面積は$n c_nr^{n−1}$と規約される。

②$n=1$の時は$C_n=\frac{\pi^{\frac{1}{2}}}{\Gamma(\frac{1}{2}+1)}=2$なので、1次元球の体積(直径)は2rと規約される。

```python
import math as m

def f0(n):
    return m.pi**(n/2)/m.gamma(n/2+1)

print(f0(1))

#出力結果
1.9999999999999998
```
③$n=2$の時は$C_n=\frac{\pi^{\frac{2}{2}}}{\Gamma(\frac{2}{2}+1)}=\pi$なので、2次元球の体積(面積)は$\pi r^2$、表面積(円周長)は$2 \pi r$と規約される。

```python
import math as m

def f0(n):
    return m.pi**(n/2)/m.gamma(n/2+1)

print(f0(2))
print(m.pi)

#出力結果
3.141592653589793
3.141592653589793
```
④$n=3$の時は$C_n=\frac{\pi^{\frac{3}{2}}}{\Gamma(\frac{3}{2}+1)}=\frac{3}{4} \pi$なので、3次元球の体積は$\frac{3}{4} \pi r^3$、表面積は$4 \pi r^2$と規約される。

```python
import math as m

def f0(n):
    return m.pi**(n/2)/m.gamma(n/2+1)

print(f0(3))
print(4/3*m.pi)

#出力結果
4.1887902047863905
4.1887902047863905
```
⑤$n=4$の時は$C_n=\frac{\pi^{\frac{4}{2}}}{\Gamma(\frac{4}{2}+1)}=\frac{1}{2} \pi^2$なので、4次元球の体積は$\frac{1}{2} r^4$、表面積は$2 \pi^2 r^3$と規約される。

```python
import math as m

def f0(n):
    return m.pi**(n/2)/m.gamma(n/2+1)

print(f0(4))
print(1/2*m.pi**2)

#出力結果
4.934802200544679
4.934802200544679
```
確かに、こう考えれば何もかもスッキリしますね（棒読み）。
[ガンマ関数 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%B3%E3%83%9E%E9%96%A2%E6%95%B0)

>互いに同値となるいくつかの定義が存在するが、<font color=green>1729年</font>、数学者レオンハルト・オイラーが無限乗積の形で、最初に導入した。

なんとこの概念の発端は<font color=green>18世紀</font>まで遡り、例によって例の如く**オイラー**が先鞭をつけていたとは。本当にオイラーはブルバキみたいな集団ペンネームじゃなかったの？　そんな感じで以下続報…