【数学溢れ話】【Token】半径・直径・円周長・円の面積・球の表面積・球の体積の計算上の往復

* (2020年11月20日までの更新分)Rのみで実装
* (2021年3月4日以降)python併記に着手
* (2021年7月30日)同心環Tagに移行。

[微分積分学（Calculus） - Wikipedia](https://ja.wikipedia.org/wiki/%E5%BE%AE%E5%88%86%E7%A9%8D%E5%88%86%E5%AD%A6)
>解析学の基本的な部分を形成する数学の分野の一つである。局所的な変化を捉える微分と局所的な量の大域的な集積を扱う積分の二本の柱からなり、分野としての範囲を確定するのは難しいが、大体多変数実数値関数の微分と積分に関わる事柄（<font color=blue>逆関数定理やベクトル解析も</font>）を含んでいる。
>
>**微分**（<font color=blue>Derivative</font>）…ある関数のある点での接線、あるいは接平面を考える演算である。数学的に別の言い方をすると、基本的には複雑な関数を**線型近似**して捉えようとする考え方である。従って、微分は**線型写像**になる。但し、多変数関数の微分を**線型写像**として捉える考え方は<font color=green>20世紀</font>に入ってからのものである。**微分方程式**はこの考え方の自然な延長にある。
>**積分**（<font color=blue>Integrate</font>）…幾何学的には、曲線、あるいは曲面と座標軸とに挟まれた領域の**面積**（<font color=blue>体積</font>）を求めることに相当している。ベルンハルト・リーマンは（<font color=blue>一変数の</font>）定積分の値を、長方形近似の極限として直接的に定義し、連続関数は積分を有することなどを証明した。彼の定義による積分を**リーマン積分**と呼んでいる。
>微分と積分はまったく別の概念でありながら密接な関連性を持ち、一変数の場合、互いに他の逆演算としての意味を持っている（<font color=blue>微分積分学の基本定理</font>）。微分は**傾き**、**積分**は面積を表す。

正直、高校生の頃は**微分**（<font color=blue>Differential</font>）や**積分**（<font color=blue>Integrate</font>）の様な**解析学**（<font color=blue>Mathematical Analysis</font>）的アプローチが大嫌いでした。状況に応じて行き当たりばったり的に節操なく考え方が切り替わり、それぞれの丸暗記を強要される感じがとても苦手だったのです。
[微分公式一覧（基礎から発展まで）](https://mathtrain.jp/bibunmatome)
[積分公式一覧（基礎から発展まで）](https://mathtrain.jp/integral_matome)
[【初心者向け】三角関数と指数・対数関数の「巡回性」について。](https://qiita.com/ochimusha01/items/61d8cfa89dc078cbe472)
それが最近になって「**解析学の主目的は近似値の精度向上であり、その為になら手段なんて選んでられない**(<font color=blue>方法論的一貫性への執着心など犬にでも食わせてしまえ!!</font>)」なる激烈なモットーを知り、発想上のコペルニクス的逆転に至りました。
[【初心者向け】「泳ぐ」数理について。](https://qiita.com/ochimusha01/items/d0731e6292db88ca4a31)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/da8e07bd-62c9-73ee-7da7-b017b8db22a2.png)
これって考えてみたら、**アルゴリズム**(<font color=blue>Algorithm</font>)の、ひいては**数理**(<font color=blue>Mathematical Things</font</font>)の**基本概念**(<font color=blue>Basic Cocept</font>)そのものの具現ではないですか!!

#「半径と直径」および「半径と円周長」の間の往復
[【Rで球面幾何学】単位円と単位球①「半径１」と「直径２」の関係について。](https://qiita.com/ochimusha01/items/d5d3d7a8fda03eddb1d8)
概ね**半径**(<font color=blue>Radius</font>)<font color=green>r</font>と**直径**(<font color=blue>Diameter</font>)<font color=green>2r</font>と**円周長**(<font color=blue>Circumference</font>)<font color=green>2πr</font>の関係については、**ピタゴラスの定理**(<font color=blue>Pythagorean Theorem</font>)<font color=green>r^2=r*cos(θ)^2+r*sin(θ)^2</font>と、**近似円概念**(<font color=blue>Approximate Circle Concept</font>)そのものの定義から以下が**自明の場合**(<font color=blue>Trivial Case</font>)とされます。
[【初心者向け】ピタゴラスの定理あるいは三平方の定理からの出発](https://qiita.com/ochimusha01/items/4c7f731b0ef3cc998aa1)
![20190916055039.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/fa5fb658-6452-326c-9f58-1ee2f3767629.png)
[【初心者向け】「円そのもの」の近似から派生した角度と経度の概念の起源](https://qiita.com/ochimusha01/items/80b70db93cbf2612bd18)
![20190819051732.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/4bb201fc-b18a-c138-5378-82f0f44d46d2.gif)
![20191031121814.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/d7a52cfe-74ef-bbcb-75ee-522bf5c1bd70.png)

1. **半径**が<font color="green">r</font>の時、**直径**は<font color="green">2r</font>。**直径**が<font color="green">d</font>の時、**半径**<font color="green">r</font>は<font color="green">d/2</font>。
2. **半径**が<font color="green">r</font>の時、**円周長**は<font color="green">2πr</font>。**円周長**が<font color="green">c</font>の時、**半径**<font color="green">r</font>は<font color="green">c/2π</font>。
3. **直径**が<font color="green">d</font>の時、**円周長**は<font color="green">dπ</font>。**円周長**が<font color="green">c</font>の時、**直径**<font color="green">d</font>は<font color="green">c/π</font>。

小学生の頃、「**円周長＝直径×3.14**」「**円の面積＝半径×半径×3.14**」と教わって直径と半径の使い分けに悩んだ記憶がありますが、要するに**半径+半径**は**直径**と表記されるルールだっただけなのですね。この辺りの自明性から疑って掛かったのが**τ(タウ)論争**となります。
[数学定数τ(タウ)](https://dic.nicovideo.jp/a/%CF%84%28%E6%95%B0%E5%AD%A6%E5%AE%9A%E6%95%B0%29)
[オイラーの等式よりも美しい](https://qiita.com/koher/items/05a31a8ca28653dc4bdb)
要するに、如何なる数理上の自明性も必ず何らかの形では反証される可能性を秘めているという話…だからこそ、メンテナンス上の都合からもゼロからの積み上げで出来ている必要があるのです。

#「円周長と円の面積」および「球の体積と表面積」の往復
この辺りから**微分**（<font color=blue>Differential</font>）や**積分**（<font color=blue>Integrate</font>）の概念がおもむろに登場。

1. **円の面積**<font color="green">πr^2</font>を**半径**<font color="green">r</font>で微分すると**円周の長さ**<font color="green">2πr</font>となる。逆に**円周の長さ**<font color="green">2πr</font>を**半径**<font color="green">r</font>で積分すると**円の面積**<font color="green">πr^2</font>になる。
2. **球の体積**<font color="green">4/3πr^3</font>を**半径**<font color="green">r</font>で微分すると**球の表面積**<font color="green">4πr^2</font>、逆に**球の表面積**<font color="green">4πr^2</font>を**半径**<font color="green">r</font>で積分すると球の体積**<font color="green">4/3πr^3</font>となる。
3. **球の表面積**<font color="green">4πr^2</font>を**半径**<font color="green">r</font>で微分すると**円周長**<font color="green">2πr</font>、逆に**円周長**<font color="green">2πr</font>を**半径**<font color="green">r</font>で積分すると**球の表面積**<font color="green">4πr^2</font>となる。

### Rの場合

とりあえずR標準関数だけで検証可能な範囲。

```R
#半径rの円の面積（pi*r^2）をrで微分すると
#円周の長さ（2*pi*r）となる。
D01<-expression(pi*r^2)
D(D01,"r")
pi * (2 * r)

#半径rの球の体積（4/3*pi*r^3）をrで微分すると
#球の表面積（4*pi*r^2）となる。
D02<-expression(4/3*pi*r^3)
D(D02,"r")
4/3 * pi * (3 * r^2)
```
さらにはライブラリRyacas導入によって可能となる検証範囲。

```R
#ライブラリ読み込み
library(Ryacas)

#半径rの円の面積（pi*r^2）をrで微分すると
#円周の長さ（2*pi*r）となる。
yacas("D(r) pi * r^2")
expression(pi * (2 * r))

#逆に円周の長さ（2*pi*r）をrで積分すると
#半径rの円の面積（pi*r^2）になる。
yacas("Integrate(r) pi * (2 * r)")
expression(pi * r^2)

#半径rの球の体積（4/3*pi*r^3）をrで微分すると
#球の表面積（4*pi*r^2）となる。
yacas("D(r) 4/3 * pi * r^3")
expression(r^2 * (4 * pi))

#逆に球の表面積（4*pi*r^2）をrで積分すると
#半径rの球の体積（4/3*pi*r^3）となる。
yacas("Integrate(r) r^2 * (4 * pi)")
expression(r^3 * (4 * pi)/3)
```
### pythonの場合
道具としてはSympy一択ですね。

**半径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=green>Cos(θ)</font>と<font color=green>Sin(θ)</font>の数値積分結果
まずは円関係の微積分における基本中の基本。<font color=green>Cos(θ)</font>と<font color=green>Sin(θ)</font>は位相が<font color=green>π/2ラジアン</font>(<font color=blue>90度</font>)ズレただけの同じ波なので、以下の数値積分結果に互換性があるのです。
[【初心者向け】三角関数と数値積分(単位円上の面積4が円の面積πに対応)](https://qiita.com/ochimusha01/items/ae4408932de0a86ca210)

①<font color=green>Cos(θ)</font>を<font color=green>0</font>から<font color=green>π/2ラジアン</font>(<font color=blue>90度</font>)まで数値積分すると<font color=green>1</font>になる。同様に<font color=green>Sin(θ)</font>を<font color=green>0</font>から<font color=green>π/2ラジアン</font>(<font color=blue>90度</font>)まで数値積分しても<font color=green>1</font>となる。**半径**<font color=green>r</font>に対応？

1. **矩形近似領域の「単位辺」**…<font color=green>θ</font>(<font color=blue>0→π/2ラジアンもしくは90度</font>)
2. **矩形近似領域の「積層辺」**…<font color=green>Cos(θ)=1→0</font>もしくは<font color=green>Sin(θ)=0→1</font>
![NIQC01.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/60e5681c-74fb-eb56-0488-9b5edf150517.gif)
![NIQS01.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/fa59ca86-b6be-7adc-49e7-29424ccabb2a.gif)

② <font color=green>Cos(θ)</font>を<font color=green>-π/2ラジアン</font>(<font color=blue>90度</font>)_から<font color=green>π/2ラジアン</font>(<font color=blue>90度</font>)まで数値積分すると<font color=green>2</font>となる。<font color=green>Sin(θ)</font>を<font color=green>0ラジアン</font>(<font color=blue>0度</font>)からπラジアン</font>(<font color=blue>180度</font>)まで数値積分しても<font color=green>2</font>となる。**直径**<font color=green>2r</font>に対応?

1. **矩形近似領域の「単位辺」**…<font color=green>θ</font>(<font color=blue>-π/2または-90度→0→π/2または90度。あるいは<font color=blue>0→πラジアンまたは180度</font>)
2. **矩形近似領域の「積層辺」**…<font color=green>Cos(θ)=1→0→1</font>もしくは<font color=green>Sin(θ)=0→1→0</font>
![NIHC01.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/6c2aff4b-85d7-8738-246b-4c274ec81f83.gif)
![NIHS01.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/fb7422af-af03-cafd-fcbd-5fa23f540d5d.gif)

# 円周長<font color=green>2πr</font> ⇄ 円の面積<font color=green>πr^2</font>
**三角形の面積の求め方**<font color=green>(高さ*底辺)÷2</font>を援用する形で高さが**半径**<font color=green>r</font>、**幅**が円周長<font color=green>2πr</font>の**直角三角形**を積層したイメージ。

1. **矩形近似領域の「単位辺」**…**半径**<font color=green>r</font>
2. **矩形近似領域の「積層辺」**…<font color=green>πr</font>=<font color=green>（半径r+半径r)×π/2</font>

```R
#話を半径１の単位円に限定すると、その面積はπとなる。
pi
[1] 3.141593

#π*Cos(θ)(θ=0~pi/2)の数値積分結果
f1<-function(x){cos(x)*pi}
integrate(f1,0,pi/2)
3.141593 with absolute error < 3.5e-14

#π*Sin(θ)(θ=0~pi/2)の数値積分結果
f2<-function(x){sin(x)*pi}
integrate(f2,0,pi/2)
3.141593 with absolute error < 3.5e-14
```
積層イメージの図示は、時間が取れたらそのうち…
#円周長<font color=green>2πr</font> ⇄ 球の表面積<font color=green>4πr^2</font>
**円筒の側面積の求め方**<font color=green>円周2πr×高さ</font>を援用して**幅**<font color=green>rΔΘ</font>で刻まれた**同心円周**<font color=green>2πr*cos(Θ)</font>を<font color=green>π/2</font>から<font color=green>-π/2</font>にかけて積層したイメージ。ないしは**同心円周**<font color=green>2πr*sin(Θ)</font>を<font color=green>0</font>から<font color=green>π</font>にかけて積層したイメージ。

1. **矩形近似領域の「単位辺」**…<font color=green>2r</font>=**半径**r×<font color=green>Cos(θ)</font>(<font color=blue>θ=-π/2ラジアン(-90度) ~ π/2ラジアン(90度)</font>)ないしは<font color=green>Sin(θ)</font>(<font color=blue>θ=0ラジアン(0度) ~ πラジアン(180度)</font>)
2. **矩形近似領域の「積層辺」**…<font color=green>2πr</font>=<font color=green>（半径r+半径r)×π</font>

```R
#話を半径１の単位球に限定すると、その表面積は4πとなる。
4*pi
[1] 12.56637

#2π*Cos(θ)(θ=-pi/2~pi/2)の数値積分結果
f3<-function(x){cos(x)*2*pi}
integrate(f3,-pi/2,pi/2)
12.56637 with absolute error < 1.4e-13

#2π*Sin(θ)(θ=0~pi)の数値積分結果
f4<-function(x){sin(x)*2*pi}
integrate(f4,0,pi)
12.56637 with absolute error < 1.4e-13
```
考え方としては**単位円筒**(<font color=blue>Unit Cylinder</font>)を加工して**単位球面**(<font color=blue>Unit Sphere</font>)に変換するプロセスと同じ筈。ただし…
[【初心者向け】「単位円筒」から「単位球面」へ](https://qiita.com/ochimusha01/items/08f5c5ad1aba4a59a27d)
![20191101180804.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/9c231f64-ece8-9c5b-240e-0684520c9ea0.gif)
![20190915101244.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/58da0c31-4d8f-b646-aa7c-b1ace2534828.gif)
<font color=purple>上掲のアルゴリズムによる計算結果</font>

```R
#「曲率」の算出
f0<-function(x) sqrt(1-x^2)
plot(f0,xlim=c(-1,1),ylim=c(0,1),asp=1,main="y=sqrt(1-x^2)")
```
![Rplot00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/42d31375-399a-f97a-0d17-631fc7aa0bcf.png)

```R
#この式に円周長2πr^2を掛けた「高さごとの円の断面の周長」を足し合わせる。
f1<-function(x) sqrt(1-x^2)*2*pi
#とりあえず単位円計算対象とする。
integrate(f1,-1,1)
9.869604 with absolute error < 6.3e-09
#何故か精度が一定以上にならない。後で戻ってきて再挑戦…
```
<font color=purple>手打ちで台形近似に挑戦した結果</font>(<font color=blue>やはり精度が一定以上にならない。</font>)

```R
#件の関数
f1<-function(x) sqrt(1-x^2)*2*pi

#台形近似
f2<-function(x){
c0<-seq(-1,1,length=x)
c1<-f1(c0)
#刻んだ短冊の幅は2/x
c2<-(c1[1:x-1]+c1[2:x])*2/(x-1)/2
sum(c2)
}
#算盤の玉みたいな状態(面積半分)からスタート。
> f2(3)
[1] 6.283185
#精度が一定以上に上がらない(というか収束してる？)。

> f2(5)
[1] 8.582991
> f2(10)
[1] 9.485197
> f2(100)
[1] 9.859003
> f2(1000)
[1] 9.869273
> f2(10000)
[1] 9.869594
```
# 円の面積<font color=green>πr^2</font> ⇄ 球の体積<font color=green>4/3πr^3</font>
まずは**円柱の体積の求め方**<font color=green>底面積πr^2×高さ2r</font>を援用。**幅**<font color=green>rΔΘ</font>で刻まれた**球の断層**<font color=green>πr^2*cos(Θ)</font>を<font color=green>π/2</font>から<font color=green>-π/2</font>にかけて積層したイメージ、ないしは**球の断層**<font color=green>πr^2*sin(Θ)</font>を<font color=green>0</font>から<font color=green>π</font>にかけて積層したイメージに到達する。そして球の面積は、それをすっぽり包む円柱の面積の<font color=green>2/3</font>（<font color=blue>円錐は1/3</font>）。

1. **矩形近似領域の「単位辺」**…<font color=green>2r</font>=<font color=green>半径r*Cos(θ)</font>(<font color=blue>θ=-π/2ラジアン(-90度)→π/2ラジアン(90度)</font>)ないしは<font color=green>Sin(θ)</font>(<font color=blue>θ=0ラジアン(0度)→πラジアン(180度)</font>)
2. **矩形近似領域の「積層辺」**…<font color=green>πr^2</font>=<font color=green>半径r×半径r×π
3. こうして出来上がった円柱の体積イメージを<font color=green>2/3</font>に。

```R
#話を半径１の単位球に限定すると、その体積は4/3πとなる。
4/3*pi
[1] 4.18879

#π*Cos(θ)(θ=-pi/2~pi/2)*2/3の数値積分結果
f5<-function(x){cos(x)*pi}
integrate(f5,-pi/2,pi/2)
6.283185 with absolute error < 7e-14
6.283185*2/3
[1] 4.18879

#π*Sin(θ)(θ=0~pi)*2/3の数値積分結果
f6<-function(x){sin(x)*pi}
integrate(f6,0,pi)
6.283185 with absolute error < 7e-14
6.283185*2/3
[1] 4.18879
```
積層イメージの図示は、時間が取れたらそのうち…
#結局、中高生の頃の私は具体的に何に躓(つまず)いたのか？
こうして全体像を俯瞰してみた結果、問題点は２つあった事に気付きました。

1. 微積分計算はぶっちゃけ「**単位辺**」と「**積層辺**」を掛け合わせた面積としてイメージされる矩形近似領域が構成出来てナンボ。それを実現する為なら本当に「**手段を選ばない**」。
2. とはいえ一応、例えば上掲の様な円関係の微積分計算では三角関数の微積分計算を中心に展開するといった数理的一貫性なら存在するのだが、当然低学年の児童はそこまで習わない。それで「**半径r**」「**直径2r**」「**円周長2πr**」「**円の面積πr^2**」「**球の表面積4πr^2**」「**球の体積4/3π^3**」の求め方それぞれを公式として強制的に暗記させられる一方、方便としてそれぞれについて、本筋から離れた「**行き当たりばったり的な解釈**」が与えられてきた。これでは全体像のイメージに到達出来ない。

前者の著名な例の一つが、微積分不可能な状況を打破する為に創造された「**実在しない超関数**」デルタ関数とも。しかも、後から「**実は実在する**」論が登場して大騒ぎに。
[デルタ関数](https://eman-physics.net/math/delta_func.html)
>デルタ関数は関数に似てはいるが、実は関数ではない。これを関数だと認めると、数学での分類の上ですっきりしない部分が出てくるらしいのである。それで数学では**関数** (<font color=blue>Function</font>) ではなく**超関数** (<font color=blue>Distribution</font>) というものに分類されている。しかし物理学徒はそのようなことには無頓着なのだ。

そして後者の問題は「**児童への性教育**」問題と構造が似ています。低学年では適当にお茶を濁して「**詳しくは高学年で習ってね**」と問題を先送り。一方、高学年では「**これについては低学年でもう習ったよね**」と問題を素通りしてしまうのです。これでは必要な知識が身に付く筈がありません。

# 近似円概念(<font color=blue>Approximate circle concept</font>)の限界としての「メルカトル図法の歪み」
ところで、こうしたアプローチからは解決の難しい問題も存在します。その著名な実例の一つが「**メルカトル図法の歪み**」ですね。
[メルカトル図法 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%AB%E3%82%AB%E3%83%88%E3%83%AB%E5%9B%B3%E6%B3%95)
![350px-Mercator-projection.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/edf31f94-710e-959f-00e7-73e050eb7143.png)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20201120/20201120185044.gif)
<font color=purple>統計言語Rによる実装例</font>(<font color=blue>テクスチャは要ダウンロード</font>)

```R
library(rgl)
spheres3d (c(0,0,0),texture= "~/Desktop/350px-Mercator-projection.png", radius=1, color="white",alpha=0.8)
movie3d(spin3d(axis=c(0,0,1),rpm=4),duration=15,fps= 10,movie="~/Desktop/test009")
```
いや、むしろ**Texture Mapping**によって問題が消失するとも?

[【Python画像処理】メルカトル図法と正距方位図法](https://qiita.com/ochimusha01/items/19fe9f2dcc4d25661a47)
**メルカトル図法**(幅2πr高さπrの矩形→全球)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210716%2F20210716045213.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=2fbd538835ff05c98df3891c1c5ad5c3)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210716%2F20210716045258.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=e23397b4ab8bd35d1771fa7ab5a5c0d0)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210718%2F20210718180353.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=8c77f090545a30a5c8ff9adb971dd0f2)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210718%2F20210718180257.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=b218698dc2297dc535a53d012e4703f3)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210718%2F20210718180325.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=b2309f01d950c9c2662e4c888a905765)
**正距方位図法**(半径$\frac{π}{2}の円盤→半球$)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210718%2F20210718135817.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=537c8dbfc724ec38852b96fa9d8255ca)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210718%2F20210718163609.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=6b41e2b83f765749213ac425d23601c0)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210718%2F20210718163134.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=b1ee89cdce013cc364d5c99710e5f2a8)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210718%2F20210718163507.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=b275ba4f8e7391924e846717cac72047)
**正距方位図法**(半径πの円盤→全球)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/84e20458-dbd5-9f01-ac4d-d043c389ca12.png)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210813/20210813134424.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210813/20210813134137.gif)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210813/20210813134757.gif)

# N次元球の表面積と体積の求め方。

こちらでで触れた**ガンマ関数**(Γ Function)の応用例。
[【Python演算処理】階乗と順列と組み合わせ](https://qiita.com/ochimusha01/items/90d9ef0a224bdd604721)

正直私にとってはパラダイムシフトでした。まさしくこれまでずっと探してきた「<font color=red>半径/直径・円周長/円の面積・球の表面積/体積の連続処理</font>」が可能になったんです。ヒントは$\sqrt{\pi}$、すなわちガウス積分に潜んでいたんですね。
[n次元球の体積 - EMANの統計力学 - EMANの物理学](https://eman-physics.net/statistic/sphere_vol.html)

>まずはn次元球の表面積S_nを,n次元球の体積V_nを半径rで微分して導出する。そもそも$V_n$を微分するとは、半径をdrだけ変化させたときの$V_n$の変化率を求める事に他ならない。半径をdrだけ変化させると,体積は表面積$S_n$に厚みdrを掛けた分だけ変化するのだから,変化率は$S_n$だと考る訳である.

```math
S_n=\frac{dV_n}{dr}=\frac{d (C_nr^n)}{dr}=n c_n r^{n-1}
```

>そしてN次元球体の体積$I_n=\pi^\frac{n}{2}$について、n個の変数($x_1, x_2, …,x_n$)をn次元のデカルト座標と見て,これを半径rにのみ注目して極座標に変換していくと被積分関数はrのみの関数になる.

```math
r^2=x_1^2+x_2^2+x_3^2+…x_n^2
```
>r以外の残りの変数というのは全て角度に関するものなので、それだけ積分した結果は球の表面積を表す。なぜなら,$I_n$というのはn次元空間の全域についての積分であり,極座標に変換した結果、rを変化させながら全空間を塗りつぶしていく、つまり表面積$S_n$にdrを掛けたものを塗り重ねていくイメージだからである.

```math
I^n=\int_{0}^{\infty}e^{-r^2}S_ndr\\
=\int_{0}^{\infty}e^{-r^2}n c_n r^{n-1}dr\\
=n c_n \int_{0}^{\infty}e^{-r^2} r^{n-1}dr
```

>ここで$t=r^2$という変数変換を行う.

```math
n c_n \int_{0}^{\infty}e^{-t} t^{\frac{n-1}{2}}(\frac{1}{2}t^{-\frac{1}{2}})dr\\
=\frac{n}{2}c_n  \int_{0}^{\infty}e^{-t} t^{\frac{n}{2}-1}dt
```

>これでΓ関数が代入可能な式形となった。

```math
\Gamma (z)=\int_{0}^{\infty}e^{-t}t^{z-1}dt
```

>すなわち

```math
I_n = \frac{n}{2}c_n \Gamma (\frac{n}{2})\\
=c_n  \Gamma (\frac{n}{2}+1)
```

>よって

```math
c_n = \frac{\pi^{\frac{n}{2}}}{\Gamma(\frac{n}{2}+1)}
```

>すなわちn次元球の体積は以下となる。

```math
V_n = \frac{\pi^{\frac{n}{2}}}{\Gamma(\frac{n}{2}+1)}r^2
```
つまり半径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$

Rの場合

```R
f0 <- function(n) pi^(n/2)/gamma(n/2+1)
> f0(1)
[1] 2
```
pythonの場合

```python
import math as m

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

print(f0(1))

#出力結果
1.9999999999999998
```

* 1次元球の体積は2rとなり、既知の結果と一致する。

②$n=2$ のとき$C_n=\frac{\pi^{\frac{2}{2}}}{\Gamma(\frac{2}{2}+1)}=\pi$

Rの場合

```R
f0 <- function(n) pi^(n/2)/gamma(n/2+1)
> f0(2)
[1] 3.141593
> pi
[1] 3.141593
```
pythonの場合

```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
```

* 2次元球の体積は$\pi r^2$、表面積は$2 \pi r$となり、既知の結果と一致する。

③$n=3$ のとき$C_n=\frac{\pi^{\frac{3}{2}}}{\Gamma(\frac{3}{2}+1)}=\frac{3}{4} \pi$

Rの場合

```R
f0 <- function(n) pi^(n/2)/gamma(n/2+1)
> f0(3)
[1] 4.18879
> 4/3*pi
[1] 4.18879
```
pythonの場合

```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
```

* 3次元球の体積は$\frac{3}{4} \pi r^3$、表面積は$4 \pi r^2$となり、既知の結果と一致する。

④$n=4$ のとき$C_n=\frac{\pi^{\frac{4}{2}}}{\Gamma(\frac{4}{2}+1)}=\frac{1}{2} \pi^2$

Rの場合

```R
f0 <- function(n) pi^(n/2)/gamma(n/2+1)
> f0(4)
[1] 4.934802
> 1/2*pi^2
[1] 4.934802
```

pythonの場合

```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
```

* 4次元球の体積は$\frac{1}{2} r^4$、表面積は$2 \pi^2 r^3$となる。

Qiitaで同じ内容をΓ関数を用いず定義する投稿も見つけました。
[n次元球の体積と表面積](https://qiita.com/Euglenese/items/d1219a35723c714aabf1)

```math
a_n = \left\{
\begin{array}{ll}
\frac{\pi^{\frac{n}{2}}}{\frac{2}{n}!} & (n = Even) \\
\frac{2}{n!!} (2 \pi)^{\frac{n-1}{2}}& (n = Odd)
\end{array}
\right.
```

>この時、半径rのn次元球の体積は $a_n r^n$、表面積は$n a_nr^{n−1}$となる。

①$n=1$ のとき$a_n=\frac{2}{1!!}(2π)^0=2$

* 1次元球の体積は2rとなり、既知の結果と一致する。

②$n=2$ のとき$a_n=\frac{2}{1!}(2π)^1=\pi$

* 2次元球の体積は$\pi r^2$、表面積は$2 \pi r$となり、既知の結果と一致する。

③$n=3$ のとき$a_n=\frac{2}{3!!}(2 \pi)^1=\frac{4}{3} \pi$

* 3次元球の体積は$\frac{4}{3} \pi r^3$、表面積は$4 \pi r^2$となり、既知の結果と一致する。

④$n=4$ のとき$a_n=\frac{\pi^2}{2!}=\frac{1}{2} \pi^2$

* 4次元球の体積は$\frac{1}{2} r^4$、表面積は$2 \pi^2 r^3$となる。

こちらの投稿でも、ガンマ関数を使えば$a_n=\frac{\pi^{\frac{n}{2}}}{\Gamma(\frac{n}{2}+1)}$ 、パイ関数を使えば$a_n=\frac{\pi^{\frac{n}{2}}}{\Pi(\frac{n}{2})}$と表せる事が指摘されています。

そんな感じで以下続報・・・