支点(开平方误差分析)

//examples

X*X-B*X-1=0

Go

X=B+1/X

Go

(init x=1 ,B=2 )

 

(setq   small  37)

(setq  big  99)

 

(defun  calc  (a  b)

(if  (eq  a  1)

       (cons  b nil)

(cons  (/  (-  b  (mod  b  a ) )

            a)

       (calc   (mod  b a )  a ))))

 

(defun  recalc  (lst  top)

(if  (eq  (cdr lst ) nil)

    (/ top  (car lst))

(/  top  

    (+   (car  lst)

         (recalc (cdr lst) top)))))

 

 

 

 

(setq  initvalue  1.0)

(setq  B  2)

(defun  fun  (value)

(+  B

    (/  1.0  value)))

 

(defun  many (value)

(if  (> (abs  (- (fun value ) value ))  (/ 1  10000000) )

       (+ 1  (many   (print (fun value)) ))

      0))

 

(defun  generate  (count )

(if  (>  count  0)

     (cons  B   (generate  (- count 1)  ))

     (cons  initvalue nil)

)

)

 

 

//比如要开(sqrt 11)

 

(x-2)(x+2)=7

Go

x=2+7/(2+x)

GO

y=2+x

Go

y-2=2+7/y

Go

y=4+7/y

Go

 

(setq  B   4)

 

(+ B (recalc   (generate (many   initvalue ) )  7.0 ) )

//注意最后一行的+ B的意义因为它与前面的1/(1+x)格式不一样.

可以实现.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

 

(x-3)(x+3)=2

Go

x=3+2/(x+3)

GO

y=3+x

Go

y-3=3+2/y

Go

y=6+2/y

Go

 

(setq  B   6)

 

(+ B (recalc   (generate (many   initvalue ) )  2.0 ) )

//注意最后一行的+ B的意义因为它与前面的1/(1+x)格式不一样.

可以实现.

 

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$44

(x-3.3)(x+3.3)=11-3.3*3.3=0.11000061

Go

x=3.3+0.11000061/(x+3.3)

GO

y=3.3+x

Go

y-3.3=3.3+0.11000061/y

Go

y=6.6+0.11000061/y

Go

 

(setq  B   6.6)

 

(+ B (recalc   (generate (many   initvalue ) )  0.11000061) )

//注意最后一行的+ B的意义因为它与前面的1/(1+x)格式不一样.

可以实现.

//////////////////////////////////////////////

从上面可以看出top的值越小越好,比如如果允许为小数,则更精确,当然现实中可能不允许为小数,但可以考虑不断逼近的方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值