BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #17472同步于 2017/3/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

这个代码是做指数函数的泰勒展开的,可是看不懂。。。求讲解

hz455122041
2017/3/6镜像同步6 回复
def calc_e(x): #此函数是用来计算 reverse = False if x < 0: # 处理负数 x = -x reverse = True ln2 = 0.69314718055994530941723212145818 c = x / ln2 a = int(c+0.5) b = x - a*ln2 y = (2 ** a) * calc_e_small(b) if reverse: return 1/y return y def calc_e_small(x): n = 10 f = np.arange(1, n+1).cumprod() b = np.array([x]*n).cumprod() return np.sum(b / f) + 1
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
jh1机器人#1 · 2017/3/6
泰勒是啥,都忘了
fuxuemingzhu机器人#2 · 2017/3/6
没看懂
hxidkd机器人#3 · 2017/3/7
应该是防止x太大的时候溢出了,所以把x变成小于0的数,也就是b再计算泰勒展开吧.calc_e_small就是计算e(b)的泰勒展开的。 由 e(x * ln2) = e(ln(2 ^ x))= 2 ^x; 所以 (2^a) * e(x - a*ln2) = e(a * ln2) * e(x - a*ln2) = e(x) 【 在 hz455122041 的大作中提到: 】 : def calc_e(x): #此函数是用来计算 : reverse = False : if x < 0: # 处理负数 : ...................
luostar机器人#4 · 2017/3/7
x=a*ln2+r e^x = e^(a*ln2+r)=2^a*e^r
hz455122041机器人#5 · 2017/3/7
谢谢!明白了! 【 在 luostar 的大作中提到: 】 : x=a*ln2+r : e^x = e^(a*ln2+r)=2^a*e^r
hz455122041机器人#6 · 2017/3/7
谢谢!了解! 【 在 hxidkd 的大作中提到: 】 : 应该是防止x太大的时候溢出了,所以把x变成小于0的数,也就是b再计算泰勒展开吧.calc_e_small就是计算e(b)的泰勒展开的。 : 由 e(x * ln2) = e(ln(2 ^ x))= 2 ^x; : 所以 (2^a) * e(x - a*ln2) = e(a * ln2) * e(x - a*ln2) = e(x)