FIBS数列的新解法(不需要开平方)
推导
$表示相应的根号
设系数的实数表示形式分别为(C+D$) 和(E+F$)
而对于特征解的二项式展开形式的值的实数解分别为(A+B$)和(A-B$)
这个是解的多项式
(C+D$)(A+B$)+(E+F$)(A-B$)
化简为
A(C+E)+B$(C-E)+A$(D+F)+B$$(D-F)
因为解为实数,所以C=E,D=-F
Go
2AC+2DB$$
同样的求特征值为
2C*(1/2)+2D(1/2)(sqrt 5)(sqrt 5)=1
2C*(3/2)+2D(1/2)(sqrt 5)(sqrt 5)=1
可以解为
C=0
D$$=1
(defun fibs (n)
(if (eq n 1)
1
(if (eq n 2)
1
(+ (fibs (- n 1) )
(fibs (- n 2) )))))
/*
这是以前的
(setq A (/ (sqrt 5) 5.0))
(setq B (- 0 A ) )
(setq X (/ (+ 1 (sqrt 5) ) 2.0 ))
(setq Y (/ (- 1 (sqrt 5) ) 2.0 ))
(defun formula (n)
(+ (* A (pow X n))
(* B (pow Y n))))
*/
(defun pow (num count)
(if (or (> count 1) (eq count 1))
(* num
(pow num
(- count 1) ) )
1))
(defun expr (i j)
(if (or (eq i (1+ j))(eq j 0) )
1
(+ (expr (- i 1)
j )
(expr (- i 1)
(- j 1) ))))
(setq xvalue 1)
(setq yvalue 5)
(defun exprsum (start end)
(if (< end 0)
0
(+ (exprsum start (- end 2))
(* (expr start end )
(pow xvalue end )
(pow yvalue (/ (- (1- start) end ) 2) )))))
2AC+2DB$$
(setq C 0)
(setq D$$ 1)
(defun test (n)
(if (> n 0)
(progn
(print (/
(+
(* 2
(exprsum (+ n 1)
n)
C)
(* 2
(exprsum (+ n 1)
(- n 1) )
D$$))
(pow 2 n)))
(print 'compare)
(print (fibs n ))
(test (- n 1)))
(print 'over)))
(test 10)