首页 > 代码库 > SICP 习题 (2.9)解题总结:区间的宽度和区间加减乘除的关系
SICP 习题 (2.9)解题总结:区间的宽度和区间加减乘除的关系
SICP 习题 2.9 像是一个数学题,要我们证明区间的和与差的宽度是被加和被减的区间的宽度的函数,而对于乘法和除法来说不成立。
书中所谓宽度就是区间起点和终点差的一半,以我看来更像是区间宽度的一半,不管怎么样,差不多是一个意思。如果你把区间看成是一个线段的话,所谓宽度应该就是起点和终点的差,如果一定要把宽度的一半记作是宽度也无所谓的。
证明区间的和的宽度是被加区间的宽度的函数这一点是比较容易证明的,看下面的证明步骤:
如果有区间1是(a1 b1),还有区间2是(a2 b2),
那么区间1的宽度为
w1 = (b1 - a1) /2
区间2的宽度为:
w2 = (b2 - a2)/2
而两区间和的宽度为:
w3 = ((b1+b2) - (a1 + a2)) / 2
w3 = (b1 + b2 - a1 -a2)/2
w3 = (b1-a1) / 2 + (b2-a2)/2
w3 = w1 + w2
同样的,减法也可以用类似的方法证明。
对于乘法和除法,因为涉及到取最大值和最小值的操作,我一时间没想到什么办法可以证明他们不像加减法那样有函数关系。
不过题目也没要求我们证明,只是要我们举个例子说明对于乘法和除法不是这样就可以了。想想也算是反证法吧,找一个不成立的例子说明。
要找的例子就是乘除法的区间宽度是一样的,但是乘除后结果的宽度不同。
找例子的话就好找喽,随便找一个:
(1 2) * (5 6) = (5 12)
这里乘数的宽度都是0.5, 而结果的宽度是3.5.
在下面的计算里:
(1 2) (100 101) = (100 202)
乘数的宽度也是0.5,不过结果的宽度就大了去了。。。。
SICP 习题 (2.9)解题总结:区间的宽度和区间加减乘除的关系