【问题标题】:Solving recurrence using sympy使用 sympy 解决复发问题
【发布时间】:2017-01-10 21:07:44
【问题描述】:

我试图使用 sympy 解决斐波那契数列的递归关系。我得到了一个与教科书不同的答案。不知道哪里弄错了。

我的同情代码

from sympy import *
f=Function('f')
var('y')
var('n',integer=True)
f=y(n)-y(n-1)+(n-2)
rsolve(f,y(n))

输出是

C0 + (-n + 1)*(n/2 - 1)

【问题讨论】:

  • 输出对于您提供的递归方程f (=0) 是正确的。你确定这是f 的正确形式吗?我相信斐波那契数列的递归关系是f = y(n) - y(n-1) - y(n-2) (=0)
  • 除了@Stelios 提到的,rsolve 还允许初始条件。斐波那契通常给出两个。
  • @Stelios 如何给出初始条件?
  • @user567879 您提供字典作为初始条件。请参阅rsolve 文档
  • @Stelios Gave as print rsolve(f,y(n),{y(0):1,y(1):1}) 得到 None 是结果。

标签: sympy recurrence


【解决方案1】:

这是解决斐波那契递归的完整代码。请注意Functionsymbols的正确使用。

from sympy import *
y = Function('y')
n = symbols('n',integer=True)
f = y(n)-y(n-1)-y(n-2)
rsolve(f,y(n),{y(0):0, y(1):1})

sqrt(5)*(1/2 + sqrt(5)/2)**n/5 - sqrt(5)*(-sqrt(5)/2 + 1/2)**n/5

【讨论】:

  • Text 给出了imgur.com/a/YUi1t 的答案,对于 fabanocci,y(0) 也为 1(我是这样给出的)。
猜你喜欢
  • 2021-03-25
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多