“五家共井”问题的图形化、Python和APPInventor解法(五家共井问题)

文/王德贵

中国古代数学巨著《九章算数》是张苍、耿寿昌所撰写的一部数学专著。其内容十分丰富,总结了战国、秦、汉时期的数学成就。是当时世界上最简练有效的应用数学,它的出现标志中国古代数学形成了完整的体系。其中有一道题是“五家共井”问题,原文如下:

五家共井,甲二绠不足,如乙一绠;乙三绠不足,如丙一绠;丙四绠不足,如丁一绠;丁五绠不足,如戊一绠;戊六绠不足,如甲一绠,皆及。

这道题的白话解释是:五家合用一口井,甲家的2根井绳和乙家1根井绳总长为井深;乙家的3根井绳和丙家的1根井绳总长为井深;丙家的4根井绳和丁家1根井绳总长为井深;丁家的5根井绳和戊家1根井绳总长为井深;戊家的6根井绳和甲家1根井绳总长为井深。问:井深、各家井绳各多少?(每家的井绳均等长)

下面我们也来分析一下五家共井问题,并用Python、图形化和APPInventor分别求解。

一、创意来源

在教授学生学习Python四级课程时,合用的练习和案例并不多,于是在搜索案例过程中,看到了这个“五家共井”问题,经过研究发现比较适合用Python四级的知识点来解决,现分享出来。

二、设计思路

这是一个不定方程问题。遇到方程最初的想法还是用枚举法,在100范围内运行后,无果。说明最小正整数解,一定比100大,于是扩大范围到300,结果运行很久也没有输出结果,看来运算时间过长了,没有能等到程序运行出结果。

于是想到库函数sympy,它是一个符号计算的Python库。我在文章《阿基米德群牛问题的分析及Python验证》里讲过,这里不再赘述。

通过解方程,得到关系式,从而求出最小正整数解。

在使用Python求解过程中,想试着再用Scratch和APPInventor求解,通过编程,运行,在对比三种代码之后很有启发,下面把求解过程分享给大家。

三、程序设计

(一)Python程序设计

1.枚举法

这是一种最直接是思路,不知道具体结果,那就用枚举法测试。

“五家共井”问题的图形化、Python和APPInventor解法

由于运行时间较长,运行时将消耗时间打印出来了,此时显示的是运行了a取值1到10的运行时间222秒。

“五家共井”问题的图形化、Python和APPInventor解法

2.时间复杂度

如果取值范围在100以内,则时间复杂度是10的10次方,按运行时间算,运行了10个a将近4分钟,那运行100个a,需要的时间就大约是40分钟。

“五家共井”问题的图形化、Python和APPInventor解法

当a的取值在1~300时,运行1个a需要的时间将近30分钟,那300个a就是近150个小时,需要6天多的时间。

“五家共井”问题的图形化、Python和APPInventor解法

这样长的运行时间完全无法实用,必须通过缩减无效运算来优化程序。改为根据最短的绳子e作为枚举的主要参数,根据网络搜索答案,我已经知道e的解小于100,等待一段时间能够获得答案。

“五家共井”问题的图形化、Python和APPInventor解法

运行10个e的时间将近是6分钟,随e值增大,单次运算时间还会缩短。优化后,运行时间大大缩短了,只需25分钟左右,已经获得了一组结果。

“五家共井”问题的图形化、Python和APPInventor解法

“五家共井”问题的图形化、Python和APPInventor解法

我们根据已有答案回推优化程序,最终获得了结果。但是如果我们不知道答案的范围,即使只在300范围内试算,运行也要6个小时左右。枚举法在面对这样一个不定方程的情况,如果不知道结果的范围,那么运行时间就会非常长!必须去寻找更简捷的算法。

3.方程解法的程序设计

(1)利用Sympy库函数先求出不定方程的关系式

“五家共井”问题的图形化、Python和APPInventor解法

运行结果:

“五家共井”问题的图形化、Python和APPInventor解法

因为绳长是整数,所以e一定是76的倍数,因此可以求出最小正整数解:甲:265,乙:191,丙:148,丁:129,戊:76;井深:721。

即甲家井绳长265,乙家井绳长191,丙家井绳长148,丁家井绳长129,戊家井绳长76,井深721。

(二)Scratch程序设计

1.基本思想还是枚举,利用附加条件循环。

2.程序说明

注意的是,几个条件都应该是“与”的关系,4个条件截图不全。如果满足条件,则说5秒。

“五家共井”问题的图形化、Python和APPInventor解法

程序是5重循环,每个都是300次,a在最外层,运行了1次,就相当于运行了4重300次,就是300×300×300×300次,用了将近24小时,a要是运行300次,总时长则大约需要300天!

“五家共井”问题的图形化、Python和APPInventor解法

3.优化

必须要优化程序,缩小取值范围。

“五家共井”问题的图形化、Python和APPInventor解法

运行时间6个e,大约3.5小时,但e越大,相对运行时间会越短,所以总运行时间大大缩短了。

“五家共井”问题的图形化、Python和APPInventor解法

但是毕竟时间复杂度太大,Scratch运行效率又太低,总时长还是太大,即使用优化程序测试结果,也需要两天左右的时间。

(三)APPInventor程序设计

1.设计思路

在Python测试时,在电脑上运行速度还是很快的了,但在手机上运行,则更依赖于手机的配置,明显感觉运行的很慢很慢。所以加上了直接验证的程序代码。

2.程序设计及说明

(1)变量和初始化

变量“枚举验证”是使用枚举法还是验证数据的转换开关。

变量“分解列表”是在验证的时候,分解输入的数据,并放在列表中,以备程序调用。

初始化程序,一是初始化程序为枚举状态,二是提示先选择使用“枚举”还是“验证”。

“五家共井”问题的图形化、Python和APPInventor解法

(2)枚举

“五家共井”问题的图形化、Python和APPInventor解法

点击“枚举”按钮,输入相关数据。因为验证时不需要水平布局4,被程序隐藏,所以使用“枚举”时,必须让其显示出来。

(3)验证

“五家共井”问题的图形化、Python和APPInventor解法

点击“验证”即可验证数据是否正确。验证数据只需要连续输入数据,所以将水平布局4隐藏。并将标签1的文本做输入提示。

(4)提交

提交时先读取是验证状态,还是枚举状态。

然后判断输入框是否为空,当不为空时,则执行程序。

“五家共井”问题的图形化、Python和APPInventor解法

验证状态:

先将输入框的数据分解成列表,再判断5组数据是否满足条件。

“五家共井”问题的图形化、Python和APPInventor解法

如果满足,则显示五个对应的数据,并提示:验证正确,否则提示:验证错误。

“五家共井”问题的图形化、Python和APPInventor解法

这个运行速度很快。

枚举状态:

按照提示,先输入取值范围和初始值和结束值,然后点击提交即可。 枚举APP界面如下。

“五家共井”问题的图形化、Python和APPInventor解法

“五家共井”问题的图形化、Python和APPInventor解法

在75-80范围内,速度很快,但在75-300范围内,手机一直在运行过程中没有反馈,就像死机了一样,虽然我知道程序还在后台运行。但这个运行时间肯定会很久,所以就没有坚持下去的必要了。判断满足条件的5个值,代码如下。

“五家共井”问题的图形化、Python和APPInventor解法

程序进行了优化,a的取值由b开始到结束值,而b值由c到结束值,以此类推,d是取e到结束值,而e是从开始值到结束值。这样运行时间会减少很多,但由于运行速度和时间与手机配置直接相关,所以虽然运算量已经大大减少,还是很难去等一个结果。

“五家共井”问题的图形化、Python和APPInventor解法

如果满足条件,则显示五家的绳长和井深,否则提示在开始值 到结束值范围内无解。

四、测试与改进

三种方法,经过测试,用Python运行最快,APPInventor最慢(使用优化程序仍然无结果输出),只是APPInventor更直观些。大家有兴趣,可以自行验证,本文不做赘述,这也是自己的学习心得,有不妥之处,请不吝赐教!

★《布宫号》提醒您:民俗信仰仅供参考,请勿过度迷信!

(0)

相关推荐

  • 生意不好挂红绳转运

                   01:生意不好挂红绳转运-运不好带红绳可解  我觉得如果回答不好的话,就必须反省自己停下语言让心平静下来,不乐观标乐观有偏见,可以更优雅地出去让心散乱…

    2022年4月23日
  • 三世演禽命书完整版

                   01:三世演禽命书完整版-生之书度影音完版淯观无生之  答:电影生命之书美丽色彩丰富满载着墨西哥文化要素电影中所铭记的色彩乐器食物马诺罗的骷髅图案,动…

    2022年6月1日
  • 梦见男女共枕有损男性脑力 女性则不会

    男女共枕有损男性脑力 女性则是什么意思?做梦男女共枕有损男性脑力 女性则好不好?男女共枕有损男性脑力 女性则有现实的影响和反应,也有梦者的主观想象,请看下面由周公解梦官网&hell…

    2022年11月16日
  • 品和堂:茶室营造(茶室氛围如何营造)

    品和堂南昌|红角洲香域滨江我们从何而来我们居往何处文 | 杨剑品和堂旗舰店从设想到谈妥只花了一个晚上,但是实际上,也是我和毛老师这十来年对空间、事物理解的一次「和谐」,冥思了很多年…

    2022年8月5日
  • 风水化解2023年小人运 2023年风水吉凶方位

    风水一直是国内传统文化中的重要组成部分,对于很多人来说,它不仅仅是一种信仰,更是一种生活方式。而在2023年小人运来临之际,风水的作用更加凸显。很多人都会想知道,如何通过风水化解小…

    2023年6月10日
  • 卧室里养吊兰好吗风水

    1.吊兰在风水中的作用有哪些吊兰是传统的居室垂挂植物之一,而且四季常青,很好养护,同时吊兰也是“祛除甲醛之王”,能够有效的吸收掉室内的有害气体哦。吊兰是属木的植物,根据生肖来说,吊…

    2023年1月14日
  • 做梦跑步 解梦大全 周公解梦

    做梦总是在跑步是为什么应该是你在逃避一些你不敢面对的东西。。经常梦见跑步梦境与凶吉祸福无关不少人有这样的苦恼:入睡后,常常做噩梦,甚至被惊醒。由于睡不好,次日头昏脑涨,影&hell…

    2022年11月19日
  • -->
  • 家居风水教你如何聚财提运生活富裕

      友好的家居风水对于家人的财运方面是有一定的帮助,也能让家人聚财的,绝对不能出现卧室杂物,有很多的情况也要善待家中的每一颗招财植物。跟大家说一说聚财的家居风水究竟怎么布局吧!  …

    2022年11月23日
  • 苏轼:经历了世间沉浮,却有别样的乐观,这就是不一样的魅力(苏轼一生经历概括图)

    苏轼:经历了世间沉浮,却有着别样的乐观,这就是不一样的魅力。一千多年来,有一位大诗人一直深受很多人的喜爱,这位诗人名叫苏轼。他有着一个独有的魔力,是一种天生散发的天才气息,很多人都…

    2022年12月17日
  • 风水师千百年来不传的秘密(坟墓风水100例)

    怎样的墓地才算是好风水,?墓地风水各位风水大师帮帮我吧……用科学的态度去对待,首先好的风水师选完地之后不会出现什么家境会变差的,只能是越用越好,其次什么风水不灵的情况下推脱是你命运…

    2023年12月7日