您的位置:首页 > 其它

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

2011-05-10 15:15 549 查看
求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!+....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: