一种求和的创新思维的应用6(继续扩张)
对于形式为a(n)=2^n*a(n-1)+2^{n*(n+1)/2}形式的,a(1)=2:
按照上节介绍的方法,求得s(n)=s(1)*2^1/{2^n*2^(n-1)..2^2*2^1}
s(n)=A*2/2^{n*(n+1)/2} (设s(1)=A,为常数)
a(n)*A*2/2^{n*(n+1)/2}=2^n*a(n-1)*A*2/2^{n*(n+1)/2}+2^{n*(n+1)/2}*A*2/2^{n*(n+1)/2}
Go
a(n)*A*2/2^{n*(n+1)/2}=a(n-1)*A*2/2^{n*(n-1)/2}+A*2
Go
a(n-1)*A*2/2^{n*(n-1)/2}=a(n-2)*A*2/2^{(n-1)*(n-2)/2}+A*2
Go
a(n)*A*2/2^{n*(n+1)/2}=A*2*{ 1+1+...+1 }
GO
a(n)=2^{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 abstract (n)
(pow 2.0
(/ (* n
(1+ n))
2)))
(defun expr (n)
(if (eq n 1)
2.0
(+
(* (pow 2 n)
(expr (- n 1) ))
(abstract n))))
(defun formula (n)
(* (abstract n)
n))
(defun test (n)
(if (> n 0)
(progn
(print (expr n))
(print 'compare)
(print (formula n))
(print (/ (expr n) (formula n)))
(test (- n 1)))
(print 'over)))
(test 10)
n的值越大,两者的值越吻合。