线性代数模型
差分方程模型
1.斐波那契(Fibonacci)数列的通项
菲波那切在13世纪提出,一对兔子出生一个月后开始繁殖,每个月出生一对新生兔子
,假定兔子只繁殖,没有死亡,问第k个月出会有多少对兔子:
解:
以对为单位,每个月繁殖兔子对数构成一个数列,这便是著名的斐波那契数列,
1
,
1
,
2
,
3
,
5
,
8...
1,1,2,3,5,8...
1,1,2,3,5,8...,,此书列
F
k
F_k
Fk,满足条件:
F
0
=
1
,
F
1
=
1
,
F
k
+
2
=
F
k
+
1
+
F
k
F_0=1,F_1=1,F_{k+2}=F_{k+1}+F_k
F0=1,F1=1,Fk+2=Fk+1+Fk
**解法1:**差分方程的特征根解法
差分方程的特征根为:
λ
2
−
λ
−
1
=
0
\lambda^2-\lambda-1=0
λ2−λ−1=0
特征根
λ
1
=
\lambda_1=
λ1=
1
−
5
2
,
λ
2
=
\frac{1-\sqrt{5}}{2},\lambda_2=
21−5,λ2=
1
+
5
2
\frac{1+\sqrt{5}}{2}
21+5是互异的。所以通解为:
F
k
=
c
1
(
1
−
5
2
)
k
+
c
2
(
1
+
5
2
)
k
F_k=c_1\left( \frac{1-\sqrt{5}}{2} \right) ^k+c_2\left( \frac{1+\sqrt{5}}{2} \right) ^k
Fk=c1(21−5)k+c2(21+5)k
利用初值条件:
F
0
=
1
,
F
1
=
1
F_0=1,F_1=1
F0=1,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\left( \frac{1-\sqrt{5}}{2} \right) +c_2\left( \frac{1+\sqrt{5}}{2} \right) =1\\ \end{cases} {c1+c2=1c1(21−5)+c2(21+5)=1
解得:
c
1
=
1
2
−
5
10
,
c
2
=
1
2
+
5
10
c_1=\frac{1}{2}-\frac{\sqrt{5}}{10},c_2=\frac{1}{2}+\frac{\sqrt{5}}{10}
c1=21−105,c2=21+105
于是:初值问题的解为:
F
k
=
(
1
2
−
5
10
)
(
1
−
5
2
)
k
+
(
1
2
+
5
10
)
(
1
+
5
2
)
k
F_k=\left( \frac{1}{2}-\frac{\sqrt{5}}{10} \right) \left( \frac{1-\sqrt{5}}{2} \right) ^k+\left( \frac{1}{2}+\frac{\sqrt{5}}{10} \right) \left( \frac{1+\sqrt{5}}{2} \right) ^k
Fk=(21−105)(21−5)k+(21+105)(21+5)k
代码:
import sympy as sp
sp.var("t,c1,c2")
t0=sp.solve(t**2-t-1)#求解特征根方程,
eq1=c1+c2-1
eq2=c1*t0[0]+c2*t0[1]-1
s=sp.solve([eq1,eq2])#求解线性方程组
print("c1=",s[c1],"\n""c2=",s[c2])#输出线性方程组的解
print("初值问题的解为:""\n",s[c1]*t0[0]+s[c2]*t0[1])#输出初始问题的解
解法二:直接利用python软件求解
import sympy as sp
sp.var("k")
y=sp.Function("y")
f=y(k+2)-y(k+1)-y(k)
s=sp.rsolve(f,y(k),{y(0):1,y(1):1})#注意这里是rsolve
print(s)