一类非线形差分方程的解法(基本结构)
(n+2)*a(n+1)=(n+1)*a(n)+4 (a(1)=4 注意4是故意选的,为了保证是整数,后面可以看出原因)
通理有:(n+1)*a(n)=n*a(n)+4
设置b(n+1)=(n+2)*a(n+1)
同样的b(n)=n*a(n)
GO
b(n+1)=b(n)+4
GO
b(n)=4*(n-1)+b(1)
因为b(1)=1*a(1)=4
GO
b(n)=4*n
所以a(n)=b(n)/n=4
下面也可以写代码测试:
(defun pow (num count)
(if (or (> count 1) (eq count 1) )
(* num
(pow num
(- count 1) ) )
1))
(defun slayer ( count)
(if (or (> count 1) (eq count 1) )
(* count
(slayer
(- count 1) ) )
1))
(defun expr (n)
(if (eq n 1)
4
(/ (+ (* n
(expr (1- n)))
4)
(1+ n))))
(defun test (n)
(if (> n 0)
(progn
(print (expr n))
(print 'compare)
(print 4)
(test (- n 1)))
(print 'over)))
(test 30)
当把初始值换成5或其它数字的时候,会看出当n值变大的时候两者的差距也在慢慢缩小。