主题:万分紧急
yfchenth
[专家分:110] 发布于 2008-02-26 12:24:00
如何解
f(t+2)=f(t)+f(t+1) f(1)=f(2)=1;
这样带初始条件的方程.
最后更新于:2008-02-26 21:32:00
回复列表 (共4个回复)
沙发
永恒的回忆 [专家分:810] 发布于 2008-02-28 13:19:00
这是Fibonacci数列,你的意思是求出通项式吧,没有直接可用的函数能解出,要求它你必须把通项式的结构弄出来,这要点经验和耐心,我做了一下,
f(n)=(((1+5^(1/2))/2)^n-((1-5^(1/2))/2)^n)/5^(1/2)
板凳
yfchenth [专家分:110] 发布于 2008-02-29 11:48:00
请问你是怎样解出来的,我急需要这个matlab程序。谢谢。
3 楼
永恒的回忆 [专家分:810] 发布于 2008-02-29 15:14:00
先把该数列编出来,取20,50,100,500,1000分别画出图案。
从图案可以看出函数增长很快,且是下凹的,就可以猜想该通项
式可能是指数型的。
比如像y=a*r^x这种类型,你可以变下型,两边取对数,
Log(y)=log(r)*x+b,也就是log(y)=px+q。log(y)与x应该成线性关系
这时就可以用polyfit函数进行拟合,我做的数据是
Log(y)=-0.803918+0.481221x
也就是f(x)=e^(-0.803918+0.481221x),f(x)=0.447581*1.61811^x
说明当初的猜想应该是正确的,至少也接近正确了。
剩下的是手工推导了:
把f(n)=c*r^n代入f(n+2)=f(n)+f(n+1) 中
解得
r1=(1+sqrt(5))/2 r2=(1-sqrt(5))/2
这时可以把r1,r2分别代入通式看下,但都不满足f(1)=f(2)=1
这条件。说明刚才的类型并不完善,稍修改下
F(n)=p*(r1)^n-q*(r2)^n
你再试下,确定下p,q的值就行了。
我都是在互交下调试的,没写具体的m文件(除了fib函数的描述),不知道能不能直接写个m文件,用一个函数直接把它解出来(其实我也想了,但想不出)
4 楼
yfchenth [专家分:110] 发布于 2008-02-29 16:46:00
请问哥们,你会二元函数拟合吗?谢谢
我来回复