; ======================================================================
;
; Structure and Interpretation of Computer Programs
; (trial answer to excercises)
;
; 计算机程序的构造和解释(习题试解)
;
; created: code17 07/14/05
; modified:
; (保持内容完整不变前提下,可以任意转载)
; ======================================================================
;; SICP No.2.15
;; 不同误差产生的原因在于——
;; 同一个变元的多次出现,但每次出现却被当成独立变元来计算误差,因此同一个变元
;; 在不同位置取了不同的误差值。
;; 我们分析一个最简单的例子A-B, 设
;; Interval A = (a-wa. a+wa)
;; Interval B = (b-wb. b+wb)
;; 则A-B的最大值可以达到(a+wa)-(b-wb), 最小值可以达到(a-wa)-(b+wb),
;; 这当然没问题——但前提是A和B是独立变元,设想如果是这样一个公式 x-x,
;; 那么它的值是恒为0的,这就与我们的计算不同了,为什么?
;; 我们的算法认为减得的最大值应该是被减数取最大值而减数取最小值,但问题在于
;; 这里的被减数与减数不独立,当被减数x取最大值的时候,减数x也只能取同样的
;; 最大值而不可能取到最小值,这与独立变量间的运算是不同的。
;; x-x只是最简单的情况,换言之,任何两个表达之间的运算
;; A(...x...) op B(...x...) 含有共同变量,则均会产生这个问题。
;; 因此Eva Lu Ator的说法是对的,par2中每个独立变量只出现一次,当然会
;; 比par1的结果产生更紧的误差范围,也更合理。