gxqcn 发表于 2009-10-22 08:46:00

5# liangbch

不知这些速算法是否适合“移植”到计算机?

数学星空 发表于 2009-10-22 08:50:07

本帖最后由 数学星空 于 2009-10-22 08:53 编辑

我们怎样算


  我们用的原则是:如果解答是L位整数,我们只要用前L位(有时只要L-1位)或后L位就够了.用后L位的方法见附录二,先说前一方法.以前

    

  当那位教授说要开201位数的23方时,以23除201余17,就能预测答数是9位数.当教授写到第六、七位时,我们就在Sharp 506上按这六位和七位数,乘以1016,然后按开方钮算出

   (9.16748×10^16)^1/23=5.46372873,

   (9.167486×10^16)^1/23=5.46372892,

  这样我们定出了答数的前七位:5,463,728,后二位已由上节的方法决定了,因此答数应该是546,372,871.其实,更进一步考虑,只需利用这个201位数的前八位数字就能在计算器上得到它的23次方根(证明见下面的附记):


(9.1674867*10^16)^{1/23}=5.46372891

  但不幸的是,把这个数乘23次方,结果与原来给的数不相符(见附录一).与原题比较,发现原题不但尾巴错了,而且在第八和第九位之间少了一个6.竟想不到Univac 1180把题目出错了,也许是出题的人故意这样做的.为什么沙昆塔拉这次没能发现这个错误?看来她可能也是根据前八位算出了结果,而没对解答进行验算.

  我们的习题没有白做,答数错了我们发现了,连题目出错了我们也纠正了.

  结论是:在教授写到91,674,867时,我们在计算器上按上这八个数字。再乘1016,然后按钮开23方就可算出答案,总共约用20″就够了,也就是比那个教授写完这个数还要快3分40秒,比沙昆塔拉快了4分半钟.

  既然已经知道答数是九位数,或者说在要求答数有九位有效数字时,我们就只需把前八位或九位数字输入计算机就够了,而无需把201位数全部输入机器,进行一些多余的计算.

  附记 以a表示那个201位数,b也表示一个201位数,它的前L位与a相同,后面各位都是零.由中值公式,可知存在一个ξ(b<ξ<a)使
a^{1/23}-b^{1/23}=ξ^{1/23}*(a-b)/{23*ξ}<19^9*10^(201-l)/{23*9*100^200}=10^(10-l)/207

      当取l=8时,上式小于1/2,由b^{1/23}的前九位(第十位四舍五入)就可给出a^{1/23}.



                                                                                                            取自<华罗庚科普著作选集>

数学星空 发表于 2009-10-22 08:57:50

下面讲一个虚构的故事,在沙昆塔拉计算表演后,有一天教授要给学生们出一道计算题.一位助手取来了题目.是一个871位数开97方,要求答案有9位有效数字.教授开始在黑板上抄这个数:456,378,192,765,431,892,634,578,932,246,653,811,594,667,891,992,354,467,768,892,……当抄到二百多位后,教授的手已经发酸了.“唉!”他叹了一口气,把举着的手放下甩了一下.这时一位学生噗嗤一声笑了起来,对教授说,当您写出八位数字后,我已把答案算出来了,它是588,415,036.那位助手也跟着笑了.他说,本来后面这些数字是随便写的,它们并不影响答数.这时教授恍然大悟,“哈哈,我常给你们讲有效数字,现在我却把这个概念忘了.”
                                                                  取自<华罗庚科普著作选集>

数学星空 发表于 2009-10-22 09:00:39

多余的话


  我不否认沙昆塔拉这样的计算才能.对我来说,不要说运算了,就是记忆一个六、七位数都记不住.但我总觉得多讲科学化比多讲神秘化好些,科学化的东西学得会,神秘化的东西学不会,故意神秘化就更不好了.有时传播神秘化的东西比传播科学更容易些.在科学落后的地方,一些简单的问题就能迷惑人.在科学进步的地方,一些较复杂的问题也能迷惑人.看看沙昆塔拉能在一个科学发达的国家引起轰动,就知道我们该多么警惕了,该多么珍视在实践中考验过的科学成果了,该多么慎重地对待一些未到实践中去过而夸夸其谈的科学能人了.

  同时也可以看到,手中拿了最先进的科学工具,由于疏忽或漫不经心而造成的教训.现代计算工具能计算得很快很准,但也有一个缺点,一旦算错了,不容易检查出来.对于计算象201位数字开23次方这类的问题——多少属于数学游戏性质的问题,算错了无所谓,而对在实际运用中的问题算错了就不是玩的.“二万条指令”出错的可能性多了,而在演算过程中想法少用或不用计算机演算,检查起来就不那么难了.这说明人应该是机器的主人,而不是机器的奴隶.至于大算一阵吓唬人的情况就更不值一提了.这里我们还可以看到基本功训练的重要性.如果基本功较差,那么就是使用大型计算机来演算201位数开23次方也要1分多钟才能算完.而有了很好的基本功,就是用小计算器也能花比1分钟少的时间算出来.

  这是一篇可写可不写的文章,我之所以写出的原因,在于我从沙昆塔拉这件事中得到了启发,受到教育,我想,这些也许对旁人也会是有用的.




                                                                                                                                     取自<华罗庚科普著作选集>

liangbch 发表于 2009-10-22 12:02:20

11# gxqcn

   适用于心算的速算法多半和凑10,100等有关。对于手工计算,因为一次只可计算1位10进制数,所有数的尾如果是0的话,可简化计算。而对于主流的32bit的计算机,一次可计算2个32bit数的四则运算。所有适用于手工计算的速算法,一般对于计算机来说并不适用。

liangbch 发表于 2009-10-22 12:05:24

我从小就对计算感兴趣,在高一的某个寒假,曾用只有8位精度的计算器 计算出数10个数的常用对数,精度达26位。

gxqcn 发表于 2009-10-22 12:25:31

那很不简单!
不仅需要一点微积分知识,还要进行一些误差分析等,并且需要相当的执着精神。

wayne 发表于 2009-10-22 12:46:35

我感觉速算没什么特殊,跟农夫种田一样,需要事先积累记忆一些东西,就像程序里的查表一样

shshsh_0510 发表于 2009-10-22 13:48:59

史丰收是我们小时候就很出名的了,可惜英年早逝。表示哀悼。
人生无常,身体最重要。

至于心算,我也很不在行。但我相信每个人经过练习都可以达到“惊人“的地步。有些人天生异禀,比如euler,如能下20盘盲棋的柳大华,能过目不忘的...,非常人所及。据说高斯也可以为兴趣随便学一门外语。hanmilton、冯诺伊曼等都是记忆超强。

但我想对于研究数学,如同体育,没天赋做冠军是不太可能的,但通过努力达到1级运动员还是可以的。

尤其做研究,越到深处,感觉主要要靠理解了。这不是短跑、长跑、马拉松,而是向唐僧取经式的以一生做代价的超长跑。在这个漫长而复杂的过程中,你的百米成绩或你能速算多少位乘法的影响已经显得不那么重要了,关键是朝着目标的持续前进。
理解这个世界,除了逻辑推理能力外,个人越来越觉得心胸也很重要。

无心人 发表于 2009-10-22 16:37:56

呵呵
我手算过10000内质数表
抄在几张初中的习题书的封页中

后来丢了
深以为憾
页: 1 [2] 3 4 5 6
查看完整版本: 速算大师史丰收逝世 享年53岁