当我用sympy.rsolve_poly
解循环方程时,得到了不一致的公式
这第一段代码用a(0) = 0
解a(n+1) = a(n) + 4n^3
from sympy import rsolve_poly, symbols
n = symbols('n',integer=True)
formula = rsolve_poly([-1, 1], 4*n**3, n)
print(formula)
# output:
# C0 + n**4 - 2*n**3 + n**2
此公式正确计算:
a(0)=0
a(1)=0
a(2)=4
a(3)=36
a(4)=144
a(5)=400
但是,在添加一点更改时:a(n+1) = 2*a(n) + 4n^3
使用a(0) = 0
使用以下代码获得公式:
from sympy import rsolve_poly, symbols
n = symbols('n',integer=True)
formula = rsolve_poly([-2, 1], 4*n**3, n)
print(formula)
# output:
# -4*n**3 - 12*n**2 - 36*n - 52
这是完全错误的。我一直在努力想办法,但没有结果
使用http://wolframalpha.com的解决方案
输入: a(n+1)=2a(n)+4n^3 | a(0)=0
替代形式: {a(n+1)=2(2n^3+a(n)),a(0)=0}
递推方程解: a(n)=4(-n(n(n+3)+9)+13 2^n-13)
正确计算:
a(0)=0
a(1)=4
a(2)=40
a(3)=188
a(4)=632
[编辑日期:2020年3月4日] 按照约翰的建议,尝试使用rsolve代替rsolve_poly:
from sympy import Function, symbols, rsolve
y = Function('y')
n = symbols('n')
f = y(n)-2*y(n-1)-4*n**3
sol = rsolve(f,y(n))
print(sol)
# Output:
2**n*C0 + C0*(4*n**3 + 12*n**2 + 12*n + 4)
相互关联地,用y(0) = 0
求解返回None
,但用y(1) = 4
求解返回一个输出:
from sympy import Function, symbols, rsolve
y = Function('y')
n = symbols('n')
f = y(n)-2*y(n-1)-4*n**3
sol = rsolve(f, y(n), {y(1) : 4})
print(sol)
# Output:
2*2**n/17 + 8*n**3/17 + 24*n**2/17 + 24*n/17 + 8/17
a(0)=0.5882352941176471
a(1)=4.0
a(2)=13.176470588235295
a(3)=31.05882352941176
a(4)=60.70588235294118
问题是如何设置y(0)=0
目前没有回答
相关问题 更多 >
编程相关推荐