验证newton二项式在指数为分数时的正确性

验证newton二项式在指数为分数时的正确性

设形式为(1+0.1)^a,下面将讨论a为2/3和8/3时,直接计算法(采用以前用e做中间计算过程的方法)和newton直接展开,两者结果的比较;

 

 

下面写程序来证明:

(setq  a  2 )

(setq  b  (/  1.0 3))

(setq  c  0.1)

 

(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 slayerex (num count)

(if (or (> count 1) (eq  count  1) )

      (* num 

         (slayerex

              (- num  1)  

              (- count 1) ) )

      1))

 

 

 

(defun  newton (n value)

(if  (eq  n  0)

           1.0

       (+  (newton  (1- n)

                    value)

           (/  (*  1.0

                   (pow  value  

                         n)

                   (slayerex  (*  a 

                                b)

                            n))

               (slayer n)))))

 

 

 

(defun  expr (n value)

(if (eq  n 0)

       1.0

      (+  (expr  (1- n)

                 value)

          (/   (*  1.0  

                   (pow  value

                         n))

               (slayer n)))))

 

 

 

(defun  formula (n value)

(expr  n  

       (*  (log  (pow value

                      a))

            b)))

 

(defun  test (n)

(if (> n 0)

  (progn 

       (print (newton   n  c))

       (print  'compare)

       (print (formula n  (+  c 1)))       

       (test (- n 1)))

  (print 'over)))

 

(test  10) 

之所以能够这样做,是因为newton二项式中的指数分子值的变化没有n!形式的快,也就是说最终还是收敛的。

[35]> (test  10)

 

1.0656023

COMPARE

1.0656023

1.0656023

COMPARE

1.0656023

1.0656023

COMPARE

1.0656023

1.0656023

COMPARE

1.0656023

1.0656023

COMPARE

1.0656023

1.0656023

COMPARE

1.0656023

1.0656021

COMPARE

1.0656023

 

下面将a的值变为8实验下:

(setq  a  8)

(test  10)

[37]> (test  10)

 

1.2893788

COMPARE

1.2893788

1.2893788

COMPARE

1.2893788

1.2893788

COMPARE

1.2893788

1.2893788

COMPARE

1.2893788

1.2893788

COMPARE

1.2893788

1.2893788

COMPARE

1.2893784

1.2893786

COMPARE

1.2893696

 

 

将C的值变为0.9有:

(setq  c  0.9)

(test  10)

[44]> (test  10)

 

5.537819

COMPARE

5.537861

5.537963

COMPARE

5.5378013

5.53771

COMPARE

5.5374537

5.538184

COMPARE

5.535627

5.5372124

COMPARE

5.527088

5.53948

COMPARE

5.4921665

5.533

COMPARE

5.369749

 

如果将c变为0.99,a变为32,需要用(test  20)才能得到如下结果:

[53]> (test  20)

 

1540.871

COMPARE

1540.8262

1540.871

COMPARE

1540.7415

1540.871

COMPARE

1540.5106

1540.871

COMPARE

1539.9132

1540.871

COMPARE

1538.4481

1540.871

COMPARE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值