回 帖 发 新 帖 刷新版面

主题:递推公式。。。。求编程!!!!

初值u(0)=0,u(1)=0
u(p+1)=u(p)*a-u(p-1)*b+c
注:a,b,c为常数,u(*)起存放作用,不是数组。


各位仙侠 这个用编程怎么实现?  

回复列表 (共8个回复)

沙发

p=1,2,.....,n

板凳

1、赋初值
u(0)=0,u(1)=0
2、循环
p=1:n
u(p+1)=u(p)*a-u(p-1)*b+c

3 楼


谢谢!解决了

4 楼

我一直对这种三项递推的收敛性分析,还没有真正弄明白。特别是对特殊函数的哪些递推公式可用来进行数值计算,所知不深呀。

5 楼


收敛性什么的现在是顾不上了,以后再说。一看您就是高手,我现在刚起步阶段很多都不懂。这两天被矩阵递推搞得头很痛。我还发了一个帖子,有空您给看看。
先谢谢了!

6 楼

!用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 楼

楼上的递归效率实在是太差了

还是用循环吧

8 楼

算法一般认为这种二项递归的情形容易演变成斐波纳契数列情形,而斐波纳契数列递归的复杂性是指数级复杂度,计算30个的时候已经到了10几亿的调用,所以多项递归算法要尽量避免使用。

我来回复

您尚未登录,请登录后再回复。点此登录或注册