python 方程式编程帮助

python programming help for equation

我是 python 的新手,正在尝试学习一些代码。这是我第一次使用 python 进行编程尝试。我有一个序列S和一个序列T(这也是一对递推关系方程的关系)其中

Sn=2S(n-1)+S(n-2)+4T(n-1)

且T=S(n-1)+T(n-1)。

S0=1,S1=2,T0=0 且 T1=1。

我如何编写一个函数 returns S 和 T 序列的第 n 个值,其中该函数将 n 作为参数并且 returns Sn,Tn 作为调用该函数的结果的元组?

递归函数如下:

def T(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    return S(n - 1) + T(n - 1)

def S(n):
    if n == 0:
        return 1
    if n == 1:
        return 2
    return 2 * S(n - 1) + S(n - 2) + 4 * T(n - 1)

def tuple_func(n):
    return(S(n), T(n))

介于 n == 20n == 30 之间的某个地方,这变得非常慢,具体取决于您的荒谬阈值。

"For fun" 我已将递归函数转换为迭代版本。在我的电脑上,它最多可以在大约一秒钟内完成 n == 50,000

def tuple_func(n):
    S = [1, 2]
    T = [0, 1]
    if n < 0:
        return(None, None)
    if 0 >= n < 2:
        return(S[n], T[n])
    for n in range(2, n + 1):
        S.append(2 * S[n - 1] + S[n - 2] + 4 * T[n - 1])
        T.append(S[n - 1] + T[n - 1])
    return(S[n], T[n])