📜  莱布尼兹谐波三角(1)

📅  最后修改于: 2023-12-03 15:11:50.163000             🧑  作者: Mango

莱布尼兹谐波三角

莱布尼兹谐波三角 (Leibniz harmonic triangle) 是由德国数学家莱布尼兹在 17 世纪提出的一种三角形数列序列,它是类似于帕斯卡三角形的三角形数列。

定义

莱布尼兹谐波三角的第 $n$ 行第 $m$ 个数 (行列下标从 0 开始) 定义为:

$$ L_{n,m} = (-1)^m \binom{n}{m} \sum_{k=0}^n \frac{(-1)^k}{2k + 1} $$

其中,$\binom{n}{m}$ 表示组合数,$\frac{1}{2k+1}$ 是调和级数的一项,即 $1 + \frac{1}{3} + \frac{1}{5} + \dots$ 的第 $k$ 项。

范例

下面是莱布尼兹谐波三角的前几行:

1
1   -1
1   -1    1
1   -1  5/4 -1
1   -1  5/4 -7/9 1
1   -1  5/4 -7/9 47/36 -1
1   -1  5/4 -7/9 47/36 -29/45 1
1   -1  5/4 -7/9 47/36 -29/45 323/180 -1
1   -1  5/4 -7/9 47/36 -29/45 323/180 -761/567 1

可以看出,莱布尼兹谐波三角的每一行都是一个逐项交替取反的调和级数的和。

应用

莱布尼兹谐波三角在数学和计算机领域都有一些应用,例如:

  • 计算 $\pi$ 的近似值;
  • 计算调和级数的近似值;
  • 计算某些函数在给定点上的级数展开值等。

下面是一个使用 Python 编写的计算莱布尼兹谐波三角的函数:

from typing import List

def leibniz_harmonic_triangle(n: int) -> List[List[float]]:
    triangle = [[0] * (i + 1) for i in range(n)]
    for i in range(n):
        for j in range(i + 1):
            sign = (-1)**j
            binom = math.comb(i, j)
            harm = sum([(-1)**k / (2 * k + 1) for k in range(i + 1)])
            triangle[i][j] = sign * binom * harm
    return triangle

其中 math.comb 是 Python 3.8 新增的 math 模块中用于计算组合数的函数。

参考资料