参考资料

本文是针对视频

https://www.bilibili.com/video/BV1ZF411f7Xv

整理的笔记

推导

椭圆的参数方程:

{x=acosθy=bsinθ\begin{cases} x = a \cos \theta \\ y = b \sin \theta \end{cases}

对参数方程求微分:

{dx=asinθdθdy=bcosθdθ\begin{cases} dx = -a \sin \theta d\theta \\ dy = b \cos \theta d\theta \end{cases}

则周长可以表示为:

C=02πdx2+dy2=02π(asinθ)2+(bcosθ)2dθ=02πa2(1cos2θ)+b2cos2θdθ=02πa2(a2b2)cos2θdθ=a02π1a2b2a2cos2θdθ=4a0π21a2b2a2cos2θdθ\begin{aligned} C &= \int_0^{2\pi} \sqrt{dx^2 + dy^2} \\ &= \int_0^{2\pi} \sqrt{(-a \sin \theta)^2 + (b \cos \theta)^2} d\theta \\ &= \int_0^{2\pi} \sqrt{a^2 (1-cos^2 \theta) + b^2 cos^2 \theta} d\theta \\ &= \int_0^{2\pi} \sqrt{a^2 - (a^2 - b^2) cos^2 \theta} d\theta \\ &= a\int_0^{2\pi} \sqrt{1 - \frac{a^2 - b^2}{a^2} cos^2 \theta} d\theta \\ &= 4a \int_0^{\frac{\pi}{2}} \sqrt{1 - \frac{a^2 - b^2}{a^2} cos^2 \theta} d\theta \\ \end{aligned}

由椭圆的离心率的定义可得:

e=ca=a2b2ae = \frac{c}{a} = \frac{\sqrt{a^2 - b^2}}{a}

则有:

C=4a0π21e2cos2θdθ=4a0π21e2cos2xdxC = 4a \int_0^{\frac{\pi}{2}} \sqrt{1 - e^2 cos^2 \theta} d\theta = 4a \int_0^{\frac{\pi}{2}} \sqrt{1 - e^2 cos^2 x} dx

根据二项式定理,可以将一个函数(x+y)n(x+y)^n展开如下:

(x+y)n=k=0nC(n,k)xnkyk(x+y)^n = \sum_{k=0}^{n} C(n,k) x^{n-k} y^k

实际上,二项式定理可以将指数解析延拓到任意实数nn,即

(x+y)n=k=0n(n1)(n2)...(nk+1)k!xnkyk\begin{aligned} (x+y)^n &= \sum_{k=0}^{\infty} \frac{n(n-1)(n-2)...(n-k+1)}{k!} x^{n-k} y^k \\ \end{aligned}

当 x=1, y=z, n=p 时,得到:

(1+z)p=1+n=1znn!k=0n1(pk)(1+z)^p = 1 + \sum_{n=1}^{\infty} \frac{z^n}{n!} \prod_{k=0}^{n-1} (p-k)

只有当z<1|z|<1时,级数才收敛。

z=e2cos2xz = -e^2 cos^2 x,则刚好满足z<1|z|<1,所以可以将其展开为:

C=4a0π21e2cos2xdx\begin{aligned} C &= 4a \int_0^{\frac{\pi}{2}} \sqrt{1 - e^2 cos^2 x} dx \\ \end{aligned}

1e2cos2x=(1e2cos2x)12=1+n=1(e2cos2x)nn!k=0n1(12k)=1+n=1(1)ne2ncos2nxn!k=0n112k2\begin{aligned} \sqrt{1 - e^2 cos^2 x} &= (1 - e^2 cos^2 x)^{\frac{1}{2}} \\ &=1 + \sum_{n=1}^{\infty} \frac{(-e^2 cos^2 x)^n}{n!} \prod_{k=0}^{n-1} (\frac{1}{2}-k) \\ &=1 + \sum_{n=1}^{\infty} (-1)^n\frac{e^{2n} cos^{2n} x}{n!} \prod_{k=0}^{n-1} \frac{1-2k}{2} \\ \end{aligned}

k=0n112k2=(1)nk=0n12k12=(1)n0122124122n32=(1)n+12n13(2n3)=(1)n+12n(2n3)!!\begin{aligned} \prod_{k=0}^{n-1} \frac{1-2k}{2} &= (-1)^n \prod_{k=0}^{n-1} \frac{2k-1}{2} \\ &= (-1)^n \cdot \frac{0-1}{2} \cdot \frac{2-1}{2} \cdot \frac{4-1}{2} \cdots \frac{2n-3}{2} \\ &= \frac{(-1)^{n+1}}{2^n} \cdot 1 \cdot 3 \cdots (2n-3) \\ &= \frac{(-1)^{n+1}}{2^n} \cdot (2n-3)!! \\ \end{aligned}

1e2cos2x=1+n=1(1)2n+1e2ncos2nx2nn!(2n3)!!=1n=1e2ncos2nx2nn!(2n3)!!\begin{aligned} \sqrt{1 - e^2 cos^2 x} &= 1 + \sum_{n=1}^{\infty} \frac{(-1)^{2n+1} e^{2n} cos^{2n} x}{2^n \cdot n!} \cdot (2n-3)!! \\ &= 1-\sum_{n=1}^{\infty} \frac{e^{2n} cos^{2n} x}{2^n \cdot n!} \cdot (2n-3)!! \\ \end{aligned}

2nn!=2n12n=242n=(2n)!!\begin{aligned} 2^n \cdot n! &= 2^n \cdot 1 \cdot 2 \cdots n \\ &= 2 \cdot 4 \cdots 2n \\ &= (2n)!! \\ \end{aligned}

双阶乘说明:

k={k(k2)31,k 为奇数k(k2)42,k 为偶数k = \begin{cases} k \cdot (k-2) \cdots 3 \cdot 1, & k \text{ 为奇数} \\ k \cdot (k-2) \cdots 4 \cdot 2, & k \text{ 为偶数} \end{cases}

规定0!!=10!! = 1

由于k!!=k(k2)!!k!!=k \cdot (k-2)!!,所以有:

1!!=1(1)!!=1(1)!!=1(1)!!=1(3)!!(3)!!=1(3)!!=(1)(5)!!(5)!!=1\begin{aligned} 1!!=1 \cdot (-1)!! = 1 &\Rightarrow (-1)!! = 1 \\ (-1)!! = 1 \cdot (-3)!! &\Rightarrow (-3)!! = -1 \\ (-3)!! = (-1) \cdot (-5)!! &\Rightarrow (-5)!! = 1 \\ \end{aligned}

当 n=0 时,有

e2ncos2nx(2n)!!(2n3)!!=10!!(3)!!=1\frac{e^{2n} cos^{2n} x}{(2n)!!} \cdot (2n-3)!! = \frac{1}{0!!} \cdot (-3)!! = -1

故可以继续化简:

1e2cos2x=1n=1e2ncos2nx(2n)!!(2n3)!!=n=0e2ncos2nx(2n)!!(2n3)!!=n=0(2n3)!!(2n)!!e2ncos2nx\begin{aligned} \sqrt{1 - e^2 cos^2 x} &= 1-\sum_{n=1}^{\infty} \frac{e^{2n} cos^{2n} x}{(2n)!!} \cdot (2n-3)!! \\ &= -\sum_{n=0}^{\infty} \frac{e^{2n} cos^{2n} x}{(2n)!!} \cdot (2n-3)!! \\ &= -\sum_{n=0}^{\infty} \frac{(2n-3)!!}{(2n)!!} \cdot e^{2n} cos^{2n} x \\ \end{aligned}

现在椭圆周长公式变为了:

C=4a0π21e2cos2xdx=4a0π2n=0(2n3)!!(2n)!!e2ncos2nxdx=4an=0(2n3)!!(2n)!!e2n0π2cos2nxdx\begin{aligned} C &= 4a \int_0^{\frac{\pi}{2}} \sqrt{1 - e^2 cos^2 x} dx \\ &= -4a \int_0^{\frac{\pi}{2}} \sum_{n=0}^{\infty} \frac{(2n-3)!!}{(2n)!!} \cdot e^{2n} cos^{2n} x dx \\ &= -4a \sum_{n=0}^{\infty} \frac{(2n-3)!!}{(2n)!!} \cdot e^{2n} \int_0^{\frac{\pi}{2}} cos^{2n} x dx \\ \end{aligned}

研究积分0π2cosnxdx\int_0^{\frac{\pi}{2}} cos^{n} x dx,使用分部积分法:

Ik=0π2coskxdx=0π2cosk1xcosxdx=0π2cosk1xd(sinx)=[cosk1xsinx]0π20π2sinxd(cosk1x)=00π2sinx(sinx)(k1)cosk2xdx=0π2(k1)sin2xcosk2xdx=(k1)0π2(1cos2x)cosk2xdx=(k1)[0π2cosk2xdx0π2coskxdx]=(k1)[Ik2Ik]\begin{aligned} I_k &= \int_0^{\frac{\pi}{2}} cos^{k} x dx \\ &= \int_0^{\frac{\pi}{2}} cos^{k-1} x \cdot cos x dx \\ &= \int_0^{\frac{\pi}{2}} cos^{k-1} x \cdot d (sinx) \\ &= \left[ cos^{k-1} x \cdot sin x \right]_0^{\frac{\pi}{2}} - \int_0^{\frac{\pi}{2}} sin x \cdot d (cos^{k-1} x) \\ &= 0 - \int_0^{\frac{\pi}{2}} sin x \cdot (-sin x) \cdot (k-1) cos^{k-2} x dx \\ &= \int_0^{\frac{\pi}{2}} (k-1) sin^2 x \cdot cos^{k-2} x dx \\ &= (k-1) \int_0^{\frac{\pi}{2}} (1-cos^2 x) cos^{k-2} x dx \\ &= (k-1) \left[ \int_0^{\frac{\pi}{2}} cos^{k-2} x dx - \int_0^{\frac{\pi}{2}} cos^{k} x dx \right] \\ &= (k-1) \left[ I_{k-2} - I_k \right] \\ \end{aligned}

继续计算递推公式:

Ik+(k1)Ik=(k1)Ik2kIk=(k1)Ik2Ik=k1kIk2\begin{aligned} I_k + (k-1) I_k &= (k-1) I_{k-2} \\ k I_k &= (k-1) I_{k-2} \\ I_k &= \frac{k-1}{k} I_{k-2} \\ \end{aligned}

k=0k=0时,I0=0π2dx=π2I_0 = \int_0^{\frac{\pi}{2}} dx = \frac{\pi}{2}

k=1k=1时,I1=0π2cosxdx=1I_1 = \int_0^{\frac{\pi}{2}} cos x dx = 1

即得到Wallis公式(俗称点火公式,偶数时可以数到 1,点火成功再补充一个π2\frac{\pi}{2},奇数时点火失败):

Ik={k1kk3k212I0,k 为偶数k1kk3k223I1,k 为奇数I_k = \begin{cases} \frac{k-1}{k} \cdot \frac{k-3}{k-2} \cdots \frac{1}{2} \cdot I_0, & k \text{ 为偶数} \\ \frac{k-1}{k} \cdot \frac{k-3}{k-2} \cdots \frac{2}{3} \cdot I_1, & k \text{ 为奇数} \end{cases}

当 k=2n 时,可得:

I2n=π2(2n1)!!(2n)!!\begin{aligned} I_{2n} &= \frac{\pi}{2} \cdot \frac{(2n-1)!!}{(2n)!!} \\ \end{aligned}

继续化简椭圆周长公式:

C=4an=0(2n3)!!(2n)!!e2nI2n=4an=0(2n3)!!(2n)!!e2nπ2(2n1)!!(2n)!!=4aπ2n=0(2n3)!!(2n)!!e2n(2n1)!!(2n)!!=4aπ2n=0(2n3)!!(2n1)!!(2n)!!2e2n=2πan=0e2n2n1[(2n1)!!(2n)!!]2=2πa{1n=1e2n2n1[(2n1)!!(2n)!!]2}=2πa{1n=1e2n2n1(k=1n2k12k)2}\begin{aligned} C &= -4a \sum_{n=0}^{\infty} \frac{(2n-3)!!}{(2n)!!} \cdot e^{2n} \cdot I_{2n} \\ &= -4a \sum_{n=0}^{\infty} \frac{(2n-3)!!}{(2n)!!} \cdot e^{2n} \cdot \frac{\pi}{2} \cdot \frac{(2n-1)!!}{(2n)!!} \\ &= -4a \cdot \frac{\pi}{2} \sum_{n=0}^{\infty} \frac{(2n-3)!!}{(2n)!!} \cdot e^{2n} \cdot \frac{(2n-1)!!}{(2n)!!} \\ &= -4a \cdot \frac{\pi}{2} \sum_{n=0}^{\infty} \frac{(2n-3)!! \cdot (2n-1)!!}{(2n)!!^2} \cdot e^{2n} \\ &= -2\pi a \sum_{n=0}^{\infty} \frac{e^{2n}}{2n-1} \left[\frac{(2n-1)!!}{(2n)!!}\right]^2 \\ &= 2\pi a \left\{1- \sum_{n=1}^{\infty} \frac{e^{2n}}{2n-1} \left[\frac{(2n-1)!!}{(2n)!!}\right]^2 \right\} \\ &= 2\pi a \left\{1- \sum_{n=1}^{\infty} \frac{e^{2n}}{2n-1} \left(\prod_{k=1}^{n} \frac{2k-1}{2k}\right)^2 \right\}\\ \end{aligned}

代码计算实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from math import pi, sqrt
from functools import reduce

def C(a: float, b: float, m: int)-> float:
a, b = (a, b) if a > b else (b, a) # 确保a是长半轴
c = sqrt(a**2 - b**2)
e = c / a
return 2 * pi * a * (1-sum(
map(
lambda n: ((e**(2*n)) / (2*n - 1)) * (reduce(
lambda x, y: x * y,
map(
lambda k: (2*k - 1) / (2*k),
range(1, n+1),
),
)) ** 2,
range(1, m+1),
),
))

# 逐步收敛到一个确定的值 15.86543958929059
for i in range(1, 100):
print(C(3, 2, i))