📜  如果给出了第Mth和Nth项,则查找GP的Pth项(1)

📅  最后修改于: 2023-12-03 14:53:23.813000             🧑  作者: Mango

查找GP的Pth项

本文将会介绍如果给出了第 Mth 和 Nth 项,如何通过公比 r 查找 GP 的第 Pth 项。

前置知识

首先需要了解什么是等比数列(geometric progression, GP)。对于一个等比数列 {a1, a2, a3, ..., an},公比为 r,那么 an = a1 * r ^ (n-1)。根据这个公式就可以计算出任意一项的值。

算法思路

首先我们需要计算出公比 r:

r = Nth / Mth

然后通过公比 r 和第 Mth 项计算出第 Pth 项的值:

Pth = Mth * r ^ (P-1)
代码实现
def find_gp_item(mth, nth, p, tol=1e-9):
    """
    Find the Pth item in the geometric progression given the Mth and Nth items.

    Args:
        mth (float/int): The value of the Mth item.
        nth (float/int): The value of the Nth item.
        p (int): The index of the item to find.
        tol (float, optional): The tolerance for comparing floating point numbers. Defaults to 1e-9.

    Returns:
        float: The value of the Pth item.
    """
    r = nth / mth
    return mth * pow(r, p-1)
示例

假设有等比数列 {2, 6, 18, ...},给定第 2 和第 3 项,需要求第 6 项,那么可以调用函数:

>>> find_gp_item(6, 18, 6)
162.0

返回的结果为 162.0,即代表等比数列 {2, 6, 18, ..., 162.0}。