一种判断数列是否收敛的不动点检测方法(应用)
x^3-x^2-1=0
GO
x^3=1+x^2
同时除以x^2可以得到:
x=1+1/x^2
Go
y=1+1/x^2的导数为-1/x^3,当x取大于1的数的时候,都能收敛于一个不动点。
下面写程序验证:
(defun pow (num count)
(if (or (> count 1) (eq count 1) )
(* num
(pow num
(- count 1) ) )
1))
(defun expr (n x)
(if (> n 0)
(expr (1- n)
(+ 1
(/ 1.0
(* x x))))
x))
(defun test (n)
(if (> n 0)
(progn
(print (expr 1000 n))
(print 'compare)
(test (- n 1)))
(print 'over)))
(test 100)
但是当x取1/2时:
(print (expr 1000 1/2))将不会收敛。
但实际上却收敛了,是什么原因?