主题:递推公式。。。。求编程!!!!
拜月贪狼
[专家分:20] 发布于 2010-11-15 15:11:00
初值u(0)=0,u(1)=0
u(p+1)=u(p)*a-u(p-1)*b+c
注:a,b,c为常数,u(*)起存放作用,不是数组。
各位仙侠 这个用编程怎么实现?
回复列表 (共8个回复)
沙发
拜月贪狼 [专家分:20] 发布于 2010-11-15 15:15:00
p=1,2,.....,n
板凳
dongyuanxun [专家分:7180] 发布于 2010-11-15 15:31:00
1、赋初值
u(0)=0,u(1)=0
2、循环
p=1:n
u(p+1)=u(p)*a-u(p-1)*b+c
3 楼
拜月贪狼 [专家分:20] 发布于 2010-11-15 16:55:00
谢谢!解决了
4 楼
asymptotic [专家分:16630] 发布于 2010-11-15 17:47:00
我一直对这种三项递推的收敛性分析,还没有真正弄明白。特别是对特殊函数的哪些递推公式可用来进行数值计算,所知不深呀。
5 楼
拜月贪狼 [专家分:20] 发布于 2010-11-15 18:07:00
收敛性什么的现在是顾不上了,以后再说。一看您就是高手,我现在刚起步阶段很多都不懂。这两天被矩阵递推搞得头很痛。我还发了一个帖子,有空您给看看。
先谢谢了!
6 楼
prolee2008 [专家分:30] 发布于 2010-11-22 15:36:00
!用fortran比较标准的做法大概是这样:
program main
integer :: p,answer
integer,external :: func
p=3
answer=func(p)
print *,answer
end program
recursive function func(p) result(ans)
integer :: a,b,c,p,ans
a=2
b=1
c=1
just : if(p>=2)then
ans=func(p-1)*a-func(p-2)*b+c
else just
ans=0
end if just
end function
7 楼
weixing1531 [专家分:2580] 发布于 2010-11-22 20:51:00
楼上的递归效率实在是太差了
还是用循环吧
8 楼
dongyuanxun [专家分:7180] 发布于 2010-11-22 21:00:00
算法一般认为这种二项递归的情形容易演变成斐波纳契数列情形,而斐波纳契数列递归的复杂性是指数级复杂度,计算30个的时候已经到了10几亿的调用,所以多项递归算法要尽量避免使用。
我来回复