e^x的基本算法——剥离大指数法

e^x泰勒展开式

e^x =

1+x+x^2/2!+x^3/3!+……+x^n/n!+……

当x<0.1时,e^x泰勒展开式收缩很快,

当x=1时,e=1+1/1!+1/2!+1/3!+....+1/(n-1)!+.....

=2.7182818284590452353602874713527,收缩较快;

当x>1时,e^x泰勒展开式收缩慢,利用 e^(y+z)= (e^y)*

(e^z) 把指数的正整数部分和小数部分剥离出来。

整数部分进一步拆分为大整数和小整数,

小数部分进一步拆分为大小数和小小数,

当小小数<0.1时,用e^x泰勒展开式。

用平方,开平方,或e^x泰勒展开式先求出一些基本的e^m值

例如:e^768=(e^384

)^2=(5.87599003828924E+166)^2

=(5.87599003828924^2)*(10^166)^2=3.45272589300743E+333

这已经超过了Excel2003表格的计算上限。但是用科学计数法手工计算乘法很方便。都是10以内的乘法,只不过小数点后拖了十几位数而已。所谓的大数,不过是从10^166一下跳到10^332而已。

一些基本的e^m值表:15位有效数

指数m

e^m值

768.000

3.45272589300743E+333

512.000

2.28441358653976E+222

384.000

5.87599003828924E+166

256.000

1.51142766500410E+111

192.000

2.42404414941008E+83

128.000

3.88770840599460E+55

096.000

4.92345828601206E+41

064.000

6.23514908081162E+27

048.000

7.01673591209763E+20

032.000

7.89629601826807E+13

024.000

2.64891221298435E+10

016.000

8.88611052050787E+06

012.000

1.62754791419004E+05

008.000

2.98095798704173E+03

006.000

4.03428793492735E+02

004.000

5.45981500331442E+01

003.000

2.00855369231877E+01

002.000

7.38905609893065E+00

001.500

4.48168907033806E+00

001.000

2.71828182845905E+00

000.800

2.22554092849247E+00

000.500

1.64872127070013E+00

000.400

1.49182469764127E+00

000.250

1.28402541668774E+00

000.200

1.22140275816017E+00

000.125

1.13314845306683E+00

000.100

1.10517091807565E+00

上表指数有三个系列

指数0.1系列:0.8,0.4,0.2,0.1;

指数1系列:512,256,128,64,32,16,8,4,2,1,0.5,0.25,0.125;

指数3系列:768,384,192,96,48,24,12,6,3,1.5;

其中:指数0.1系列可以被替代合并到指数3系列中,变成

768,384,192,96,48,24,12,6,3,1.5,0.75,0.375,0.1875,0.09375;这在自动筛选中有优势;不过,在我的手工筛选中,看起来不直观,我没采纳。

三个系列指数依次减半,e^m值形成两道交叉拦截网,能快速剥离出上表已知的e^m大乘数,剩下小小乘数,用e^x泰勒展开式求得。

这就是e^x的基本算法——剥离大指数法,戏称“剥洋葱法”。

无论是大乘数,还是小乘数,在有效值范围内都没有误差。结果应该只有末位微小误差。

例1:求e^709.78

[附注]:e^709.78是Excel 2003能算的最大e指数。

解答方法:

与上表一些基本的e^m值比较大小,先减去比自身小的最大指数;剩余数再减去最大指数;直到剩余指数<0.1为止。剩下小小乘数,用e^x泰勒展开式求得。

解:709.78-512=197.78-192=5.78-4=1.78-1.5=0.28-0.25=0.03

我上面连减连等,只是赋值过程,实际等式并不成立。

则e^709.78=e^512*e^192*e^4*e^1.5*e^0.25*(1+0.03+0.03^2/2!+0.03^3/3!+…)

=(2.28441358653976E+222)*( 2.42404414941008E+83)*(

1.49182469764127E+00)

*( 4.48168907033806E+00)*( 1.28402541668774E+00)*

(1.03045453395352E+00)

=1.79282279439456E+308

对比

用winXP附件计算器算得e^709.78=1.792822794394564537793394126609e+308

用Excel 2003所算exp(709.78)=1.79282279439452E+308,末位误差4。

例2:求e^609.78

用剥离大指数法算得e^609.78=6.66943700668976E+264

用winXP附件计算器算得e^609.78=6.6694370066897621913640530143816e+264

用Excel 2003所算exp(609.78)=6.66943700668958E+264,次末位误差2,误差超过预期值。

例3:求e^709.75

用winXP附件计算器算得e^609.75=1.7398368732641605576982527118271e+308

用上述另外两种方法算得exp(709.75)=1.73983687326416E+308,

都没有误差。

归纳3例:

我用剥离大指数法 剥离出 无论是大乘数,还是小乘数,在有效值范围内都没有误差。结果没有误差。而用Excel

2003所算exp(x)误差比我的大得多。

Excel 2003能算的e指数上限是e^709.78,

而winXP附件计算器的e指数上限是e^100000,十万!看着吓人,想当然认为运算量惊人,实际上指数翻倍表很快就能达到。只要多存贮十几个数就行。

e指数从768到98304的基本的e^m值表:32位有效数

指数m*

e^m值

98304**

7.6691815229220805415649846411723e+42692

65536**

8.3784949360959980424147659911234e+28461

49152**

2.7693287134109017758911569794102e+21346

32768**

9.153411897263226536143191093518e+14230

24576**

1.6641300169791126557423069120266e+10673

16384**

3.0254606091078473230142723118225e+7115

12288**

4.0793749729328789121855707231938e+5336

8192***

5.5004187196138507460749835307009e+3557

6144***

2.019746264492864190772097799669e+2668

4096***

7.4164807824289889048192105074986e+1778

3072***

1.4211777737119533881371856259636e+1334

2048***

2.7233216450557192501248059284353e+889

1536***

1.1921316092243982556320386304063e+667

1024***

5.2185454343674342011212095343615e+444

768****

3.452725893007433996921737546073e+333

例4:求e^1234.56

解:先逐层剥离大指数

1234.56-1024=210.56-192=18.56-16=2.56-2=0.56-0.5=0.06

则e^1234.56=e^1024* e^192* e^16* e^2* e^0.5* e^0.06

=(5.2185454343674342011212095343615e+444)*(2.42404414941008E+83)

*(8.88611052050787E+06)*( 7.38905609893065)*(

1.64872127070013)

*(1+0.06+0.06^2/2!+0.06^3/3!+…)

在Excel 2003中先算e^192* e^16* e^2* e^0.5* e^0.06

=2.78641699004831E+91

再乘以5.21854543436743,得1.45410436616604E+92

最后乘以10^444得1.45410436616604E+536

对比

用winXP附件计算器算得

e^1234.56=1.4541043661660424155251073646321e+536

没有误差。

计算机e的指数怎么计算方法,e^x的基本算法——剥离大指数法相关推荐

  1. 计算机、数学、运筹学等领域32个重要算法

    来源: 深度学习与机器视觉 奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自 ...

  2. java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)

    所有移动平均法都存在很多问题. 它们都太难计算了.每个点的计算都让你绞尽脑汁.而且也不能通过之前的计算结果推算出加权移动平均值. 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口宽度是 ...

  3. 图说2016深度学习十大指数级增长

    转自:https://www.52ml.net/21402.html http://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=26519906 ...

  4. matlab的数值计算方法,数值计算方法中的一些常用算法的Matlab源码

    数值计算方法中的一些常用算法的Matlab源码,这些程序都是原创,传上来仅供大家参考,不足之处请大家指正,切勿做其它用途-- 说明:这些程序都是脚本函数,不可直接运行,需要创建函数m文件,保存时文件名 ...

  5. 【机器人】基于指数积的机械臂正运动学算法

    基于指数积的机械臂正运动学算法 1.前言 2.指数积公式建立过程 3.PoE实例 4.PoE与DH对比 1.前言 在学习了刚体运动的指数坐标表示和运动旋量后,我又对使用指数积法(PoE)对机械臂进行正 ...

  6. 为什么在优化算法中使用指数加权平均

    本文知识点: 什么是指数加权平均? 为什么在优化算法中使用指数加权平均? β 如何选择? 1. 什么是指数加权平均 指数加权平均(exponentially weighted averges),也叫指 ...

  7. 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky

    接上文 计算机图形学 学习笔记(三):多边形的区域填充算法,反走样算法 光栅图形学算法 本文主要讲解直线裁剪算法. 裁剪 使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的知识图形 ...

  8. 泰尔指数r语言_一招搞定泰尔指数及其分解

    上期讲了区位基尼系数,这期讲讲泰尔指数. 泰尔指数的原理同基尼系数,都是在测度一组数据分布的差异性.但是其有着良好的可分解性质,因此当需要考察产业空间集中度在不同区域层面的差异来源时,比较常用. 一. ...

  9. 电子计算机计算精度不高,(1)计算机的特点是处理速度快、计算精度高、存储容量大、可靠性高、工作全自动以及...

    (1)计算机的特点是处理速度快.计算精度高.存储容量大.可靠性高.工作全自动以及 A.造价低廉 B.便于大规模生产 C.适用范围广.通用性强 D.体积小巧 [答案]:C [解析]:计算机的主要特点就是 ...

最新文章

  1. JavaScript = TypeScript 类入门
  2. 〖Python〗-- 性能相关及深度优先与广度优先
  3. c调用python函数_C调用Python的函数
  4. io python_python学习笔记 - StringIO以及BytesIO
  5. 段码液晶屏笔段电压范围_液晶屏逻辑板和屏坏判断及检修
  6. 【Python】类的基本写法与注释风格
  7. IIS 服务器下载apk文件报404错
  8. 大厂后端必备分布式,一定要好好学|文末有1元福利
  9. access游戏库不显示 ea_EAAccess服务Steam平台售价一览 EAAccess服务常见问题解答
  10. sqlite排序规则
  11. python怎样打开加密的文件_如何使用python加密多个文件
  12. DNS服务器配置详解
  13. 《WF编程》系列之15 - 顺序工作流与SequenceActivity 3 顺序工作流
  14. python读取内存指针_从dll读取内存值+指针+偏移量
  15. 如果站做的比较大,那么关键词和内页的分布就要比别人高一个档次
  16. 黄巾之乱-服务器线程控制
  17. 小魔术用计算机猜年龄,魔术中的数学之猜年龄
  18. 江苏省普通话水平测试计算机评分细则,江苏省普通话水平测试评分细则(试行).doc...
  19. Linux笔记——/etc/motd文件,/etc/issue.net文件
  20. TOM邮箱收件人、抄送人、密送人、群发单显有什么区别

热门文章

  1. 《要么读书,要么旅行,身体和灵魂总有一个在路上》读后感
  2. 反向的css动画,反向使用CSS动画(通过重置状态?)
  3. 采购员的主要职责是什么?
  4. 【Linux】用最形象的例子学习进程,从入门到深入
  5. MYSQL互为主从部署(Censo:6)
  6. .Net 微信开发与微信支付
  7. Xilinx 黑金ZYNQ开发板AX7020,利用VIVADO进行FPGA程序烧录
  8. 《高通QCS8250》Debug XBL开机启动、进入fastboot花屏问题
  9. SDM660 xbl阶段使能I2C 设备实现
  10. 如何扩展计算机c盘的控件,win7电脑怎么增加c盘空间 电脑增加c盘空间操作方法...