论坛网站建设方案免费打广告平台有哪些
1、求数列通项
(1)转化为求矩阵的幂次问题
例:求斐波那契数列的通项公式
已知斐波那契数列满足: F k + 2 = F k + 1 + F k F_{k+2}=F_{k+1}+F_{k} Fk+2=Fk+1+Fk
(a) 降阶:将二阶差分方程转化为一阶差分方程组
{ F k + 1 = F k + 1 F k + 2 = F k + 1 + F k \begin{cases} F_{k+1}=F_{k+1}\\ F_{k+2}=F_{k+1}+F_{k} \end{cases} {Fk+1=Fk+1Fk+2=Fk+1+Fk 写成矩阵形式: a k + 1 = A a k k = 0 , 1 , 2 , . . . a_{k+1}=Aa_{k}\ k=0,1,2,... ak+1=Aak k=0,1,2,...
其中 A = ( 0 1 1 1 ) , a k = ( F k F k + 1 ) , a 0 = ( 1 1 ) A=\left(\begin{matrix} 0&1\\1&1 \end{matrix}\right)\ , \ a_k=\left(\begin{matrix} F_k\\F_{k+1} \end{matrix}\right)\ , \ a_0=\left(\begin{matrix} 1\\1 \end{matrix}\right) A=(0111) , ak=(FkFk+1) , a0=(11)
推导得有: a k = A k a 0 a_k=A^ka_0 ak=Aka0
(b) 求矩阵的Jordan标准形
矩阵的特征方程为: λ 2 − λ − 1 \lambda^2-\lambda-1 λ2−λ−1,特征根为 1 ± 5 2 \frac{1\pm \sqrt5}{2} 21±5,特征向量为 , ( 1 ± 5 2 1 ) \ , \ \left(\begin{matrix} \frac{1\pm \sqrt5}{2}\\1 \end{matrix}\right) , (21±51),取特征向量为列向量构成矩阵 P P P
则有 A = P ( 1 + 5 2 0 0 1 − 5 2 ) P − 1 A=P\left(\begin{matrix} \frac{1+ \sqrt5}{2}&0\\0&\frac{1- \sqrt5}{2} \end{matrix}\right)P^{-1} A=P(21+50021−5)P−1
从而 a k = A k a 0 a_k=A^ka_0 ak=Aka0,斐波那契数列的通项公式为 a k a_k ak的第一行元素。
(c) python实现
import sympy as sp
sp.var('k',positive=True,integre=True)
a=sp.Matrix([[0,1],[1,1]])
val=a.eigenvals()
vec=a.eigenvects()
P,D=a.diagonalize()
ak=P@(D**k)@(P.inv())
F=ak@sp.Matrix([1,1])
print(sp.latex(sp.simplify(F[0])))
求出通项公式为: F k = 2 − k ( 2 ( 1 − 5 ) k + 5 ( 1 + 5 ) k + 3 ( 1 + 5 ) k ) 5 + 5 F^k=\frac{2^{- k} \left(2 \left(1 - \sqrt{5}\right)^{k} + \sqrt{5} \left(1 + \sqrt{5}\right)^{k} + 3 \left(1 + \sqrt{5}\right)^{k}\right)}{\sqrt{5} + 5} Fk=5+52−k(2(1−5)k+5(1+5)k+3(1+5)k)
取值:
f = sp.lambdify(k,F[0])
print(f(9))
(2)特征根法求通项
由于斐波那契数列的特征根是互异的,故可设通项为:
F k = c 1 ( 1 + 5 2 ) k + c 2 ( 1 − 5 2 ) k F_k=c_1(\frac{1+\sqrt5}{2})^k+c_2(\frac{1-\sqrt5}{2})^k Fk=c1(21+5)k+c2(21−5)k
代入初值条件求解上述二元一次方程: F 0 = F 1 = 1 F_0=F_1=1 F0=F1=1
{ c 1 + c 2 = 1 c 1 ( 1 + 5 2 ) + c 2 ( 1 − 5 2 ) = 1 \begin{cases} c_1+c_2=1\\ c_1(\frac{1+\sqrt5}{2})+c_2(\frac{1-\sqrt5}{2})=1 \end{cases} {c1+c2=1c1(21+5)+c2(21−5)=1
解得 { c 1 = 1 2 + 5 10 c 2 = 1 2 − 5 10 \begin{cases} c1=\frac{1}{2}+\frac{\sqrt5}{10}\\c2=\frac{1}{2}-\frac{\sqrt5}{10} \end{cases} {c1=21+105c2=21−105,从而得到通项公式。
python实现:
import sympy as sp
x=sp.symbols('x')
c=sp.symbols('c:2')
f=sp.Eq(x**2,x+1)
vals=list(sp.solveset(f))
eq1=c[0]+c[1]-1
eq2=c[0]*vals[0]+c[1]*vals[1]-1
s=sp.solve([eq1,eq2])
(3)利用rsolve函数求解有理系数单变量递推式
import sympy as sp
k=sp.symbols('k')
y=sp.Function('y')
f=y(k+2)-y(k+1)-y(k)
F=sp.rsolve(f,y(k),{y(0):1, y(1):1})