📜  序列的 n 项之和(1)

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

序列的 n 项之和

在数学中,序列是指按照某种规律依次排列的一组数。当我们需要计算序列的 n 项之和时,可以采用多种算法。

等差数列

等差数列是指两个相邻的数之间的差值是固定的序列。通常我们表示为 $a_n=a_1+(n-1)*d$,其中 $a_1$ 表示首项,$d$ 表示公差,$a_n$ 表示第 $n$ 项。那么其前 $n$ 项之和为 $\frac{n(a_1+a_n)}{2}$。

def sum_of_arithmetic_sequence(n, a1, d):
    """计算等差数列前 n 项之和"""
    an = a1 + (n - 1) * d
    return n * (a1 + an) / 2
等比数列

等比数列是指两个相邻的数之间的比值是固定的序列。通常我们表示为 $a_n=a_1*q^{n-1}$,其中 $a_1$ 表示首项,$q$ 表示公比,$a_n$ 表示第 $n$ 项。那么其前 $n$ 项之和为 $\frac{a_1(q^n-1)}{q-1}$(当 $q \neq 1$ 时)。

def sum_of_geometric_sequence(n, a1, q):
    """计算等比数列前 n 项之和"""
    if q == 1:
        return n * a1
    return a1 * (q ** n - 1) / (q - 1)
斐波那契数列

斐波那契数列是指前两个数之和等于后一个数的序列。通常我们表示为 $f_1=1,f_2=1,f_n=f_{n-1}+f_{n-2},n \ge 3$。那么其前 $n$ 项之和为 $f_{n+2}-1$。

def fibonacci_sequence(n):
    """生成斐波那契数列"""
    seq = [1, 1]
    for i in range(2, n):
        seq.append(seq[i-1] + seq[i-2])
    return seq

def sum_of_fibonacci_sequence(n):
    """计算斐波那契数列前 n 项之和"""
    seq = fibonacci_sequence(n+2)
    return sum(seq) - 1
总结

以上就是计算序列的 n 项之和的三种常见算法。需要注意的是,在计算时需要考虑数据类型和精度。还有一些其他的方法,比如递推式,线性递推等,这里就不一一赘述了。