如何在SymPy中定义递归形式的等差数列和等比数列
在SymPy中可以使用recurrence_sequence函数直接通过递推关系定义数列,不需要先推导闭式表达式。
等差数列(递推式 $U_{n+1}=U_n + r$)定义示例
对应你给出的$u_0=2$、公差$r=5$的场景,代码如下:
from sympy import * n = symbols('n', integer=True) u0 = 2 r = 5 # 递推关系写成标准形式:u(n) - u(n-1) = r # 四个参数依次为:齐次项系数列表、初始项列表、变量、非齐次项常数 ari_seq_rec = recurrence_sequence([1, -1], [u0], n, r)
等比数列(递推式 $U_{n+1}=qU_n$)定义示例
以$u_0=2$、公比$q=3$为例,代码如下:
q =3 # 递推关系标准形式:u(n) - q*u(n-1) = 0,无非齐次项 geo_seq_rec = recurrence_sequence([1, -q], [u0], n)
验证生成的数列项
可以调用coeff方法获取指定下标的项,示例:
# 输出等差数列n从0到5的所有项 print([ari_seq_rec.coeff(i) for i in range(6)]) # 输出结果:[2, 7, 12, 17, 22, 27] # 输出等比数列n从0到5的所有项 print([geo_seq_rec.coeff(i) for i in range(6)]) # 输出结果:[2, 6, 18, 54, 162, 486]
如果仅需要小范围使用递归数列,也可以直接用Python原生递归函数实现,无需依赖SymPy:
# 原生Python实现等差数列递归定义 def ari_rec(n): if n ==0: return 2 return ari_rec(n-1)+5
内容的提问来源于stack exchange,提问作者u2gilles
相关产品推荐
相关产品推荐

