求a^x展开的欧拉方法(基本分析结构)

    技术2022-05-14  1

    求a^x展开的欧拉方法

    对于很小的w,设a^w=1+k*w,k可以理解为一个放大系数。

    Go

    a^x=(a^w)^(x/w)=(1+k*w)^(x/w)

    Go

    按Newton的方法展开

    a^x=1+(x/w)*k*w/1!+(x/w)*(x/w-1)*(k*w)^2/2!+(x/w)*(x/w-1)*(x/w-2)*(k*w)^3/3!+....

    Go

    a^x=1+x*k/1!+(x)*(x-w)*(k)^2/2!+(x)*(x-w)*(x-2*w)*(k)^3/3!+....

    GO

    简化为

    a^x=1+x*k/1!+(kx)^2/2!+(kx)^3/3!+....

    在这里如果假设x为1,有a=1+k/1!+(k)^2/2!+(k)^3/3!+....

    (上面这个式子也可以通过a^w=1+k*w,-->a=(1+k*w)^(1/w)获得 )

    同样在这里设置放大系数也无穷的小,为1,获得结果为a=e=2.7182818,

    同样也能够得出e=(1+1/n)^n,直接用牛顿公式

    e=1+n*(1/n)/1!+n*(n-1)*(1/n)^2/2!+n*(n-1)*(n-2)*(1/n)^3/3!...

    Go

    e=1+1/1!+1/2!+1/3!...

    下面有这样的测试程序:

    (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  expr  (n k)

    (if  (<  n  0)

           0

          (+  (expr  (- n 1)

                     k)

              (/  (* 1.0 (pow k n))

                  (slayer n)))))

     

    (expr  10  1),当k(小于1)取不同值的时候a的值也不一样

    这样就有e^x=1+x/1!+(x)^2/2!+(x)^3/3!+....

     


    最新回复(0)