在上篇文章《如何通过建模快速求解任意倒水问题?》中,我向大家详细介绍了如何通过建模将倒水问题转化为几何问题。接下来,我将向大家演示如何用这种建模方法求解任意倒水问题。
一、倒水问题
如果一只12升的水杯盛满了水,另有两只分别是8升和7升的空水杯,利用这两个空杯子,我们能不能倒出任意分量的水出来?如倒出2杯6升、5升的水,2杯5升、5升的水,2杯4升、3升的水,2杯1升、2升的水……
二、建模
如上图所示,我们建立了一个直角坐标轴以及一个几何模型Oa8d4c5b7。这个模型有以下特点:
1、Oa8的长度为8,代表着8升的水杯中的水量,Oa8被a1~a7平分为8等份。
2、Ob7的长度为7,代表着7升的水杯中的水量,Ob7被b1~b6平分为7等份。
3、a8d4长度等于12-8=4,代表12升水杯中的水倒满8升水杯后最多还能往7升水杯中倒入4升水,AD被d1、d2、d3平分为4等份。
4、b7c5长度等于12-7=5,代表12升水杯中的水倒满7升水杯后最多还能往8升水杯中倒入5升水,b7c5被c1~c4平分为5等份。
5、d4c5上的点代表12升水杯中的水已全部倒入9升、5升水杯中,d4c5被d5、d6平分为3等份。
如果我们以Oa8为x轴,Ob7为Y轴,12升水杯中剩余的水量表示Z轴上的数字。那么,我们就能表示出Oa8d4c5b7上任意一点的坐标。
在上篇文章中,我们通过分析知道:整个倒水过程,各水杯中的水量,只可能用Oa8d4c5b7上的点表示,无法用Oa8d4c5b7内的点表示。每次倒水过程只能用模型中画好的各点间的连线表示。
有了上面的结论,我们只需在模型中画出我们需要的线路,就能找到倒水问题的解了。
三、用模型解决倒水问题
1、如何使三个水杯中的水量分别为11升、0升、1升?
a1(1,0,11)
此时,模型中a1(1,0,11)、b1(0,1,11)是我们的目标。a1与b1间可以相互转换,这里我以a1举例,我们只需要从a1点逆向出发,找到到达O点的路线,再将线路倒回来,就得到了解题的办法。
我们很快就找到了倒水线路:o-a8-c1-a1。(3步)
上面线路中的倒水过程,我们用表格的形式画出来,就得到了a1(1,0,11)的倒水过程:
a1的倒水过程
在到达a1的过程中,我们的线路也经过了a8(8,0,4)和c1(1,7,4),这样a8、c1的倒水问题也解决了。
2、如何使三个水杯中的水量分别为10升、0升、2升?
此时,模型中a2(2,0,10)、b2(0,2,10)是我们的目标。我们以a2举例,只需要从a2点逆向出发,找到到达O点的路线,再将线路倒回来,就得到了解题的办法。
我们很快就找到了倒水线路:o-a8-d4-b4-a4-c4-d3-b3-a3-c3-d2-b2-a2。(12步)
我们将倒水线路拿出来,会看得更明白:
上面线路中的倒水过程,我们用表格的形式画出来,就得到了a2(2,0,10)的倒水全过程:
上面线路如果用水杯画出来的话,就是下面这个过程:
为了到达a2,我们的线路也经过了a3(3,0,9)、a4(4,0,8)、a8(8,0,4)、d2(8,2,2)、d3(8,3,1)、d4(8,4,0)、b2(0,2,10)、b3(0,3,9)、b4(0,4,8)、c3(3,7,2)、c4(4,7,1),这样a3、a4、a8、d2~d4、b2~b4、c3、c4的倒水问题也解决了。
3、如何使三个水杯中的水量分别为5升、0升、7升?
此时,模型中a5(5,0,7)、b5(0,5,7)是我们的目标。我们以a5举例,只需要从a5点逆向出发,找到到达O点的路线,再将线路倒回来,就得到了解题的办法。
我们很快就找到了倒水线路:o-a8-d4-c5-b7-a7-d5-b5-a5。(8步)
上面线路中的倒水过程,我们用表格的形式画出来,就得到了a5(2,0,10)的倒水全过程:
在到达a5的过程中,我们的线路也经过了a7(7,0,5)、a8(8,0,4)、d4(8,4,0)、d5(7,5,0)、c5(5,7,0)、b7(0,7,5)、b5(0,5,7),这样a7、a8、d4、d5、c5、b7、b5的倒水问题也解决了。
4、如何使三个水杯中的水量分别为6升、0升、6升?
此时,模型中a6(6,0,6)、b6(0,6,6)、d6(6,6,0)是我们的目标。我们以a6举例,只需要从a6点逆向出发,找到到达O点的路线,再将线路倒回来,就得到了解题的办法。
但是我们很快发现,从a6出发,线路一直在循环,无法到达o点,也就是说,我们无法使3个水杯中的水分别为6升、0升、6升。
至此,我们就分析出了所有可能的倒水情况。
好了,这一讲就到这里了。
我是科学发现之历程,一个致力于科普数学、物理的科技媒体。想了解更多相关的知识,关注微信公众号科学发现之历程,期待你的到来~