28. [M30 ] (R. Feynman.) 开发一个计算  的算法,其中 0 ≤ x < 1, 只使用加法、减法和移位(shifting)运算(类似于 exercise 25 使用的算法), 并分析算法的精度。

解:

Exercise 25 是计算  其中  的一个简易算法,算法用到了两个变量 x 和 y,其中 x 初值为输入的 x,y 的初值为零。在算法中 x 不断减去它当前数值的 ( k 从 1 开始逐渐递增),相当于 x 以  的比例逐渐递减,同时 y 会相应加上  来弥补 x 的减少,使得当前的  的值始终保持近似恒定,直到 x(或 x 的近似值)减到1为止,此时 y 的值就是算法所求的 。当然算法需要一个所有 k  对应的  的值的辅助表来快速计算 y 的值。

Exercise 28 刚好是 Exercise 25 的逆运算,因此我们正好将对 x 和 y 变量的操作互换。注意到 此时算法输入的 x 限制为 0 ≤ x < 1,而我们发现 ,因此可以将变量 x 的初值设为(1-x),变量 y 的初值设为分子 b   ,在算法进行中 y 变量的值以  的比例逐渐递减( k 从 1 开始逐渐递增),同时 x 变量的值会相应减去  来弥补 y 变量值的减少,使得当前变量  的值始终保持近似恒定(),直到 变量 x(或 x 的近似值)减到 0 为止,此时 变量 y 的值就是算法所求的  的值。具体英文算法如下(考虑到计算机的有限精度限制,引入很小的常数 ):

  1. E1.  [Initialize.] Set  ,  , and , where  is the largest possible value of x, and  is the nearest approximation to . (The quantity  will remain approximately constant in the following steps.)

  2. E2.  [Test for end.] If , stop.

  3. E3.  [Compare.] If , increase  by 1 and repeat this step.

  4. E4.  [Reduce values.] Set ,

    and go to E2.

当然算法需要复用 25 题用到过的所有 k  对应的  的值的辅助表。

在步骤 E1 中,假设 y 的初值(考虑近似误差)为  ,在其后每次执行 E4 时,都可能会产生计算误差,对应到第 j 次 (j > 0),可表示为   , ,其中  和  是每次 E4 在有限精度限制下导致的小误差。当算法终止时,得到最终结果 。

有必要指出, 那个辅助表中  的值也只能是在有限精度下的近似值。但当基数 b 是 e 时(自然对数),计算机可以算出  更为精确的值。根据麦克劳林级数展开, ,那么就有  ,这个计算在电脑中可以通过简单的移位操作更加高效地完成。

29. [HM20 ] Let x be a real number greater than 1. (a) For what real number b > 1 is  a minimum? (b) For what integer b > 1 is it a minimum? (c) For what integer b > 1 is a minimum?

解:

将  改写成  。

(a): 令 f(b) =  ,则  ,若要让 f(b) 取到最小值,则必须  ,再和其它 b 的取值比较,显然有 当 b = e 时 

有最小值。

(b): 当 b 是大于 1 的整数时,其实就是看  什么时候最小。显然,当 b 是大于 e 的整数时,随着 b 的增大, 也会相应增大。现在只需要比较下当 b = 2 和 b = 3 时 

的值哪个大就行。由于  ,可知当 b = 3 时 取到最小值,也就是  在 b = 3 时取到最小值。

(c): 由  ,当 b 是大于 1 的整数时,其实就是看  什么时候最小。貌似和上面一样, 当 b 是大于 e 的整数时,随着 b 的增大, 也会相应增大。而且比较 b = 2 和 b = 3 时的情况,也有  ,即 b =3 时 

比 b = 2 时更小。微妙之处在于比较 b = 3 和 b = 4 的情况, 有  ,即  当 b = 3 时 比 b = 4 时 ​​​更大。且  ,即  当 b = 5 时 比 b = 4 时 更大。这说明 b = 4 才是 向上的拐点,所以可得 b = 4时 取到最小值,也就是  在 b = 4 时取到最小值。

30. [12] Simplify the expression , assuming that and .

解:

对这个表达式再取一次自然对数,就得到 ,因此这个表达式可直接简化为 x

计算机程序设计艺术习题解答(Excercise 1.2.2-28~30题)相关推荐

  1. 《禅与计算机程序设计艺术》 / 陈光剑

    第一性原理 宇宙之起源 物质之形成 半导体材料 纳米光刻 二极管 太极阴阳与二进制 布尔代数与数字逻辑系统 模拟电子电路系统 信号与处理 信息论 图灵机模型 冯诺依曼模型 计算机演化史 什么是编程? ...

  2. 什么是艺术?《禅与计算机程序设计艺术》 / 陈光剑

    贡布里希在<艺术的故事>一书中说过:"根本没有艺术这种东西,唯有艺术家而已".意思是,艺术其实就是艺术家的一种表达方式.情绪和价值观.艺术家在哪里,艺术就在哪里:艺术在 ...

  3. 《计算机程序设计艺术》pdf

    下载地址:网盘下载 内容简介 编辑 本书作者D. E. Knuth是在计算机学界十分著名的学者,在本领域享有很高权威和盛名,他的这部著作是无数计算机专业人员的学习教材和参考读物,也是许多专业研究工作者 ...

  4. 《计算机程序设计艺术》系列书

    <计算机程序设计艺术>重译自Donald E. Knuth(汉名高德纳)的三卷著作:"The Art of Computer Programming: 1. Fundamenta ...

  5. 《计算机程序设计艺术》

    计算机程序设计艺术(国防工业出版社) <计算机程序设计艺术>重译自Donald E. Knuth(汉名高德纳)的三卷著作:"The Art of Computer Program ...

  6. 计算机程序设计艺术读后感,计算机程序设计艺术(第1卷)读后感1000字

    <计算机程序设计艺术(第1卷)>是一本由[美] Donald E. Knuth著作,清华大学出版社出版的精装图书,本书定价:80.00元,页数:650,特精心从网络上整理的一些读者的读后感 ...

  7. 计算机界最大“追书坑”,82岁大神高德纳仍在写《计算机程序设计艺术》4B卷...

    本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处 晓查 编译整理 Donald Knuth,中文名高德纳,是他创造了"算法分析"这一新的计算机科学研究领域. 对 ...

  8. 计算机大师高德纳权威著作《计算机程序设计艺术》影印版精装版已经入库,即将上市!

    <计算机程序设计艺术>系列著作对计算机领域产生了深远的影响.这一系列堪称一项浩大的工程,自 1962年开始编写,计划出版 7卷,目前已经出版了 4卷.<美国科学家>杂志曾将这套 ...

  9. 你这辈子可能都不需要看《计算机程序设计艺术》了!

    "欣哥, 我什么时候可以看<计算机程序设计艺术>? " "你这辈子可能都不需要看了!" 我在大学的时候并不知道<计算机程序设计艺术>(简 ...

最新文章

  1. 2012年技术图书大盘点
  2. 轻量级高精度人脸关键点推荐
  3. 按需加载图片(图片懒加载)
  4. c语言对分查找实验报告,C语言实验指导.doc
  5. 计算机网络-思维导图(3)数据链路层
  6. 编译QT出错 Basic XLib functionality test failed!
  7. Linux文件系统之df
  8. 观星(计算几何/凸包/多边形面积)
  9. 将本地代码上传github
  10. Pr使用技巧,如何使用pr去水印?
  11. 拆分工作簿为多个文件_能不能将总表快速拆分为多个工作簿?当然!
  12. 【C语言】案例四十九 学生档案管理系统
  13. Altera FPGA开发过程中sof、pof、jic文件的区别
  14. Mysql联表查询(学生表、教师表、成绩表、课程表)
  15. 关于MySQL的驱动org.gjt.mm.mysql.Driver
  16. 解决接口慢的几种方法
  17. 北京PMP考试考点在哪里?
  18. 前端-查询参考资料网站/软件/移动端、jQuery开发插件官网
  19. echarts 添加百分号
  20. centos php mcrypt,CentOS下安装Php mcrypt扩展方法

热门文章

  1. 湖南大学头歌实训小测
  2. 良心文章:史上最用心的 iOS App 上架流程
  3. 去掉烦人的微软正版提示
  4. iOS SDK开发步骤
  5. python医疗系统设计_医疗保险信息管理系统的设计与实现.doc
  6. 简述 18.8.18 现有的微信小程序API能做什么
  7. Linux环境搭建----VMware安装虚拟机
  8. 如何安全的从硬盘恢复文件?
  9. 原来马云是对的,我有点相信996是福报了
  10. CentOS6.3上部署Ceph