; ====================================================================== ; ; Structure and Interpretation of Computer Programs ; (trial answer to excercises) ; ; 计算机程序的构造和解释(习题试解) ; ; created: code17 04/25/05 ; modified: ; (保持内容完整不变前提下,可以任意转载) ; ======================================================================
;; SICP No.2.9
;; 对于一个interval x = (l(x), u(x)), ;; (u(x)为x的upper-bound,l(x)为x的lower-bound) ;; 其windth的数学定义为 w(x) = 1/2 * (u(x) - l(x)) ;; (显然,对于任何x, w(x)>= 0 ) ;; 设c(x) = 1/2 * (u(x) + l(x)),则 ;; l(x) = c(x) - w(x) 同时 u(x) = c(x) + w(x)
;; ;; 对于两个interval:x1和x2的加法 ;; w(x1+x2) = w(l(x1)+l(x2), u(x1)+u(x2)) ;; = 1/2 * (u(x1)+u(x2)-l(x1)-l(x2)) ;; = 1/2 * (u(x1)-l(x1)) + 1/2 * (u(x2)-l(x2)) ;; = w(x1) + w(x2) ;; ;; 同理对于两个interval:x1和x2的减法,可得 ;; w(x1-x2) = w(x1) + w(x2) ;; ;; 对于两个interval:x1和x2的乘法 ;; 我们注意到,x1,x2上下界的符号不知道, ;; 因此不能说l(x1)*l(x2)为最小u(x1)*u(x2)最大 ;; 按照我们在课文中定义乘法时的分析,任何两端的组合均可能为最大(小)值 ;; 设 s 是一个集合 {l(x1)*l(x2), l(x1)*u(x2), u(x1)*l(x2), u(x1)*u(x2)} ;; 则 s={c(x1)*c(x2) - w(x1)c(x2) - c(x1)w(x2) + w(x1)w(x2), ;; c(x1)*c(x2) - w(x1)c(x2) + c(x1)w(x2) - w(x1)w(x2), ;; c(x1)*c(x2) + w(x1)c(x2) - c(x1)w(x2) - w(x1)w(x2), ;; c(x1)*c(x2) + w(x1)c(x2) + c(x1)w(x2) + w(x1)w(x2)} ;; 而 w(x1*x2) = w(min(s),max(s)) ;; 通过简单列举我们可知,无论min(s)和max(s)取自s中的任何一对搭配 ;; w(x1*x2) = 1/2*(max(s)-min(s)) 均同时含有w和c的项,因为w和c ;; 是互相独立的自变量,因此x1,x2相乘所得数x的width不是仅依赖于x1和 ;; x2的width为自变量的函数。 ;; ;; 除法与乘法同理 ;; ;; 原题中,对于乘除法的分析仅要求举例说明即可。因此可以设l(x1),l(x2)均大于0的 ;; 最简单情况来分析,结果显而易见。

|