递推关系为a(n) =pa(n−1) +qa(n−2) ,本项=前一项*2+前前项,具体如
1,1,3,7,17,41,99,239,……
一般的递推关系可以用以下方法
得两个解:
用第3项、第4项组两个方程:
解方程的结果
解方程的链接:https://mathdf.com/equ/cn/
以上解方程略显麻烦,用以下的python代码:
from sympy import symbols, Eq, solve, sqrt# 定义变量
x, y = symbols('x y')# 定义方程
eq1 = Eq((1 + sqrt(2))**3 * x + (1 - sqrt(2))**3 * y, 3)
eq2 = Eq((1 + sqrt(2))**4 * x + (1 - sqrt(2))**4 * y, 7)# 求解方程组
solution = solve((eq1, eq2), (x, y))
print(solution)
得出结果:
{x: -1/2 + sqrt(2)/2, y: -sqrt(2)/2 - 1/2}
即
化简之后为,注意项数从0开始(后来发现的):
Excel验证,有误差,是复杂的计算导致精度丢失:
python验证
import math def calculate_y(n): sqrt2 = math.sqrt(2) # 计算公式的各个部分 part1_numerator = 3 part1_denominator = 7 * 2 * sqrt2 - 20 part2_numerator = (1 - sqrt2)**3 * (3 * sqrt2 - 4) part3 = (1 + sqrt2)**3 # 计算整个表达式的值 first_term = ((1 + sqrt2)**n) * (part1_numerator - part2_numerator / part1_denominator) / part3 second_term = ((1 - sqrt2)**n) * (3 * sqrt2 - 4) / part1_denominator y = first_term + second_term return y # 获取用户输入
n = float(input("请输入n的值: ")) # 计算并打印y的值
y = calculate_y(n)
print(f"当n={n}时,y的值为: {y}")
结果,还行。