|||
利用对数和反对数进行大数的乘除法运算,已经没有必要。计算器使《数学用表》成为历史陈迹;而计算机更进一步改变了人们的思考方法。谨以“鸡公五钱,鸡母三钱,鸡子钱三。百钱百鸡,各鸡几何”求解为例说明如下。
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
鸡母 4 11 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<iostream.h>
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<<’ (‘<<i<<’, ’<<j<<’, ’<<k<<’)’<<endl;
}
在CPU 450MHz计算机上运算1秒钟得到7组解。
鸡公 0 3 4 7 8 11 12
鸡母 25 20 18 13 11 6 4
鸡子 75 77 78 80 81 83 84
有三组解鸡子数不是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。
注3:32年前学习719 算法语言(类似于Algol 60)。本科阶段曾三次使用计算机,程序是纸带打孔后输入(图片来自网上)。一个字符用两排孔即两个8进制数表示。当年能从纸带直接读出字符而检查程序;有错则以小图之工具进行局部修补。
Fortran 语言的计算条件以80列的卡片输入。又,过去学习的许多数值方法和技巧已因计算机速度的提高而失效。
注4:记分册(成绩单)是毕业时学校发给的,扫描4页在下列博文给出以说明课程安排。博文还给出当年所用部分讲义的照片。
大学该以教学为主http://blog.sciencenet.cn/blog-275648-831195.html
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-5 20:19
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社