混沌的解决(杂技)
考虑如下通项公式:
a(n)=(n-1)*a(n-1)+(n-1)*a(n-2)
先变形有:
a(n)-n*a(n-1)=-a(n-1)+(n-1)*a(n-2)
换元有:
a(n)-n*a(n-1)=-{a(n-1)-(n-1)*a(n-2)}
如果采用程序计算,初始条件是a(0)=init,a(1)=init+(-1)^0
a(1)-1*a(0)=(-1)^0=1,
...
a(n)-n*a(n-1)=(-1)^(n-1)
现在寻找这种混沌系统的初始条件:
考虑前面基础部分的经验,能够得到这里:
a(n)=n!*(init + e^(-1) ),
下面写程序来证明:
(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))
(setq init 2.0)
(setq a 4.0)
(defun expr (n)
(if (eq n 0)
init
(if (eq n 1)
(+ init
1)
(+ (* (1- n)
(expr (1- n)))
(* (1- n )
(expr (- n 2)))))))
(setq e 2.7182818284)
(defun formula (n)
(* (slayer n)
(+ (/ 1.0
e)
init)))
(defun test (n)
(if (> n 0)
(progn
(print (expr n))
(print 'compare)
(print (formula n))
(test (- n 1)))
(print 'over)))
(test 10)
n的值越大,两者的值越吻合。