php代码百钱白鸡,科学网—“百钱百鸡”求解与思考方法变迁 - 尤明庆的博文

利用对数和反对数进行大数的乘除法运算,已经没有必要。计算器使《数学用表》成为历史陈迹;而计算机更进一步改变了人们的思考方法。谨以“鸡公五钱,鸡母三钱,鸡子钱三。百钱百鸡,各鸡几何”求解为例说明如下。

1算术是分析和试算的方法

“大和尚一人吃两个馍,小和尚三人吃一个馍。一百个和尚吃一百个馍,大小和尚各多少”,是著名的算术题。50个大和尚吃100个馍,缺50个和尚数。减少1个大和尚,可增加6个小和尚,净增5人;将50 ÷ 5=10个大和尚换成60个小和尚,即实现百个和尚吃百个馍。

“百钱百鸡”问题可同样求解。100钱买20只鸡公,鸡数缺80只。1只鸡公可换15只鸡子,或1只鸡母6只鸡子;增加的鸡数都不是80的约数,不能求解。2只鸡公可换(1) 30只鸡子,(2) 1只鸡母21只鸡子,(3) 2只鸡母12只鸡子。换法(2)增加鸡数20只,恰好是80的约数;将(80 ÷ 20)×2=8只鸡公换成4只鸡母和84只鸡子,即可实现百钱百鸡。

若认识到鸡母价格居中,若干鸡母可等量等价地换取鸡公、鸡子,可以求出问题的其它解。通过试算,7个鸡母与4个鸡公、3个鸡子等价,因而有:

鸡公12     8     4      0

鸡母411    18     25

鸡子84     81    78     75

显然,算术求解不仅需要分析和试算,而且需要洞察力或技巧。

2 代数是通用和确定的方法

代数求解方法是将所求未知数用字母表示,把问题提供的条转换成算式,由通用方法确定问题的解。求解过程不具备明确的物理含义。若设鸡公X只,鸡母Y只,鸡子Z只,则有

X+Y+Z=100;5X+3Y+Z/3=100

这是不定方程组,所以其解是

Y=25-7X/4;Z=75+3X/4

因鸡数为非负整数,所以有

X=4K;Y=25-7K;Z=75+3K

式中K=0, 1, 2, 3

代数求解的关键是理解题意,具体计算没有难度。

3 计算机是搜索和验证的方法

计算机求解“百钱百鸡”就是将可能情形逐一列出验证。Basic程序是:

10 FOR I=0 TO 100

20  FOR J=0 TO 100

30   FOR K=0 TO 100

40   IF I+J+K =100 AND 5*I+3*J+K/3=100 THEN PRINT I, J, K

50   NEXT K,J,I

60 END

这里没有对问题的任何分析、推理和试算,仅在可能范围内根据题意进行验证:鸡公、鸡母、鸡子数在0~100全组合,判断鸡数和钱数是否为100。最后在1013种情形内确定“百钱百鸡”4组解。计算机的高速运算能力使“大海捞针”成为现实,成为最佳方案。

4 讨论

计算机改善了数值计算的速度和精度,进而改变了思考过程。若以一元四次方程的求根公式求解具体方程,手工计算极为困难;利用计算机求解,将求根公式程序化也极端繁琐,而直接利用两分法则程序简洁。就解决实际问题而言,研究高次方程的求根公式没有价值。

利用神经元、BP网络等纯数值方法,具备太阳、地球和月亮若干时间序列的位置,即可预测其后的位置,而不需了解相关物理定律;即从第谷的观测结果,不必经过开普勒和牛顿的研究,就可以知道行星运行情况。当然,随着时间推移,预测误差逐步增大,乃至完全失真。

使学生“知其然,知其所以然”,曾经是我们的教学宗旨,因学科向广度和深度的发展现已难以做到;而计算机可能使“知其然,知其所以然”不再成为科学研究的唯一目标。由此产生的影响,不能不令人深思。

注1:拙稿原发表于《煤炭高等教育》1999年专辑,文字已略作删减。

注2:2001年10月为研究生授课时说,以Basic语言进行“百钱百鸡”的1013全选择,IBM-PC 286几乎不能完成,386约需10分钟,而CPU 333MHz的组装机约需1分种。课后硕士生YSQ用TC 3.0语言编制程序:

# include

void main( )

{ int i, j, k;

for (i=0; i<=100; i++)

for (j=0; j<=100; j++)

for (k=0; k<=100; k++)

if (i+j+k= =100 && 5*i+3*j+k/3= =100)

cout<

}

在CPU 450MHz计算机上运算1秒钟得到7组解。

鸡公034781112

鸡母252018131164

鸡子75777880818384

有三组解鸡子数不是3的倍数。经讨论发现第7行的3应改为3.——Basic语言和C语言取整约定不同。对计算机给出的结果需进行核查。

注3:计算机储存载体也不断变化。2012年红色优盘8G;2001年灰色优盘26 M;1997年元月3吋盘1.44 M;1996年元月5吋盘1.6 M;1988年时5吋盘只有160 K。3dd67670d8478f1be36b47dd386ae4d5.png

注3:32年前学习719算法语言(类似于Algol 60)。本科阶段曾三次使用计算机,程序是纸带打孔后输入(图片来自网上)。一个字符用两排孔即两个8进制数表示。当年能从纸带直接读出字符而检查程序;有错则以小图之工具进行局部修补。08c6f3f51a989b9eab400423ffc54b3f.png

Fortran语言的计算条件以80列的卡片输入。又,过去学习的许多数值方法和技巧已因计算机速度的提高而失效。c1ad6240d9287ee1b17f9260aaf80d53.png

注4:记分册(成绩单)是毕业时学校发给的,扫描4页在下列博文给出以说明课程安排。博文还给出当年所用部分讲义的照片。转载本文请联系原作者获取授权,同时请注明本文来自尤明庆科学网博客。

链接地址:http://blog.sciencenet.cn/blog-275648-832917.html

上一篇:学位论文“致谢”中的人称问题

下一篇:借都江堰说些没有公式的力学

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值