用MATLAB求解菲波那契问题
借助Z变换及反变换求解如下菲波那契问题:f(n+2)=f(n+1)+f(n),f(0)=1,f(1)=2。该问题原意是:式中f(0)=1表示初始有一对兔子;f(1)=2表示一繁殖周期后,那对兔子成熟并生育另一对小兔,因此兔子总对数为2。依次类推,求经过n个周期后,兔子有多少对,即菲波那契数列通项f(n)的值。进而,计算比值序列f(n)/f(n+1),观察该值是否随n的増大,而趋向黄金比值0.618。还请绘制还请绘制n从1到15之间的f(n)、f(n)/f(n+1)的图形。(提示:差分方程初值问题的求解;Z变换, trans,lztrans;stem、plot:菲波那契数列常用于股市分析)
程序
clear
clc
syms n f(n) z Fn
q0=ztrans(f(n),n,z);
q1=ztrans(f(n+1),n,z);
q2=ztrans(f(n+2),n,z);
fn1=q2-q1-q0==0;
Fn2=subs(fn1,[f(0),f(1),ztrans(f(n),n,z)],[1,2,Fn]);
Fn3=solve(Fn2,Fn);
fn2=iztrans(Fn3,z,n)%斐波那契数列通项
fn3=simplify(fn2,‘IgnoreAnalyticConstraints’,true);
fn4=simplify(fn2,‘Steps’,40)
ff1=subs(fn2,n,n+1);
ff2=fn2/ff1;
figure(1) %从1到20之间f(n)大小,存入s并绘图。
s1 = vpa(real(subs(fn2,n,{1:20})));
stem(s1);
title(‘斐波那契序列’)
xlabel(‘n’)
figure(2)
s2 = vpa(real(subs(ff2,n,{0:20})));%虚数部分为残差,可略去。
plot(s2)
hold on

本文介绍了如何使用MATLAB通过Z变换解决菲波那契数列的问题,展示了一段MATLAB代码,计算了f(n)/f(n+1)的比值,并绘制了n从1到15的f(n)和比值曲线,观察其是否接近黄金比例0.618。
最低0.47元/天 解锁文章
4928

被折叠的 条评论
为什么被折叠?



