一类非线形差分方程的解法(中间增量的变化)
设(n+1)*a(n)=n*a(n-1)+4*n { a(1)=2 }
设置b(n)=(n+1)*a(n) b(1)=2*a(1)=4
Go
b(n)=b(n-1)+4*n
GO
注意这里是故意设置a(1)=2,从而让b(1)=4=4*1,而与形式符合的。
b(n)=2*n*(n+1)
Go
a(n)=b(n)/(n+1)=2*n
下面也可以写代码测试:
(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)
2
(/ (+ (* n
(expr (1- n)))
(* 4
n))
(1+ n))))
(defun test (n)
(if (> n 0)
(progn
(print (expr n))
(print 'compare)
(print (* 2 n))
(test (- n 1)))
(print 'over)))
(test 30)
注意这里将形式变化一下有a(n)=n/(n+1)*{ a(n-1)+4 } 它的表达形式与以前常见的a(n)=a(n-1)+2形式不一样,但结果却一样,从这可以看出其中初始值的巨大作用。