用摄动法证明fibs的一个公式
a(1)+a(2)+...+a(n)=a(n+2)-1
根据条件有 :
a(1)=a(3)-a(2)
a(2)=a(4)-a(3)
...
a(n)=a(n+2)-a(n+1)
将上面的方程左右两边分别相加有:
a(1)+a(2)+...+a(n)=a(n+2)-a(2)=a(n+2)-1得到证明;
注意如果采用经典的差分方程解法,会得到特征方程为:
s(n)-s(n-1)=s(n-1)-s(n-2)+ s(n-2)-s(n-3)
Go
x^3-x^2=x^2-x + x-1
Go
(x-1)*(x^2-x-1)=0
这样用待定系数的方法可以获得解答,但却不一定能证明这个公式;
下面写程序来证明:
(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 exprhelp (n)
(if (or (eq n 1)
(eq n 2))
1
(+ (exprhelp (- n
1))
(exprhelp (- n
2)))))
(defun expr (n)
(if (eq n 1)
(exprhelp 1)
(+ (expr (- n
1))
(exprhelp n))))
(defun test (n)
(if (> n 0)
(progn
(print (expr n))
(print 'compare)
(print (- (exprhelp (+ n
2))
(exprhelp 2)))
(test (- n 1)))
(print 'over)))
(test 20)