本文发表于《大众科学》的前博客网络,仅反映作者的观点,不一定反映《大众科学》的观点
在我最近参加的一次讲座中,演讲者分享了一些神秘的指示
当[偶数]被减半时,[写]二;
当[奇数]减1时,[写]0;
其中[写]0,加倍;
其中减半,自乘。
对于像我这样具有数学和文化背景的人来说,这完全不清楚,但上面的几行是一个千年历史的算法,用于计算2的幂。它们出现在印度数学家平伽罗的梵文韵律学论文《Chandaḥśāstra》中,他生活在公元前2或3世纪左右。
关于支持科学新闻
如果您喜欢这篇文章,请考虑通过以下方式支持我们屡获殊荣的新闻报道 订阅。通过购买订阅,您正在帮助确保未来能够继续讲述关于发现和塑造我们当今世界的想法的具有影响力的故事。
即使在被告知以上几行包含计算2的幂的指令后,我也不确定如何部署它们。幸运的是,正在发表演讲的金·普洛夫克用一个例子进行了演示。为了找到24,该算法产生了以下计算序列。
4 | 4/2=2 | 2/2=1 | 1−1=0 |
2 | 2 | 0 | |
16 | 4 | 2 | 1 |
在顶行,从左到右工作,我们从给定的数字4开始,然后如果数字是偶数则除以2,如果数字是奇数则减去1,迭代此过程直到我们得到0。在中间行,如果减半则记录2,如果减去则记录0。在底行,从右到左工作,我们从数字1开始,然后在上面一行看到0则加倍,如果看到2则平方。
这是数字更大的过程,7。计算27
7 | 7−1=6 | 6/2=3 | 3−1=2 | 2/2=1 | 1−1=0 |
0 | 2 | 0 | 2 | 0 | |
128 | 64 | 8 | 4 | 2 | 1 |
我玩了几次这个算法,开始明白为什么它总是产生正确的答案。平方一个数字使指数加倍,对于基数2,将指数加一对应于将数字加倍。这种方法比简单的重复加倍步骤更少,我发现玩起来非常令人满意。
平伽罗记录了这个服务于文学的算法。在梵文中,一个音节可以是重音节或轻音节,他正在确定在具有n个音节的韵律中可能存在的重音节和轻音节的组合数量。(并非所有这些韵律都实际用于文学中,因此问题是理论问题,而不是文学实践。)他的文本包括与计算具有一定数量的重音节或轻音节的韵律相关的其他计算。
一旦被解释,平伽罗的算法对我来说很满意,但他的指令在其原始形式中充其量似乎是神秘的。我将其视为提醒,即数学不能完全从产生它的其余文化中完全孤立地解释。要理解为什么平伽罗的算法采取现在的形式,必须了解梵语语言、语法和美学,以及后来学者对古典文本进行注释的历史。
在她《印度数学》一书中,普洛夫克包含了一个关于梵语语言和文学的附录,例如,理解梵语诗歌韵律的重要性有助于数学史学生理解为什么在梵语数学文本中用某些词语和短语代替数字。对梵语文学的理解也鼓励现代解释者保持谨慎,而不是对我们对几个世纪前的梵语数学文本的知识过于自信。普洛夫克在梵语附录的结尾写了这段话(强调是她加的)
总而言之,从中世纪用梵语写作的数学家想要表达的意思,到现代翻译家声称他所说的意思,这条道路通常漫长而危险。如果作者的文字被一长串抄写员成功保存和转录,并且如果后来遇到的文本手稿的注释者正确理解并解释了它,并且如果出版该文本的编辑在抄写员出错的情况下选择了合适的手稿读物,并且如果译者有足够的语言和技术知识,加上足够的批判性想象力,来选择最合适的文本结果版本的可能解释,那么读者遇到的很可能就是对原始文本相当不错的近似。但是在这个过程的每个阶段都存在重大的不确定性,因此在处理最终结果时始终需要谨慎。
普洛夫克的演讲实际上不是关于平伽罗和他的诗歌算法。它是关于比鲁尼,一位11世纪的波斯博学家,他访问了印度并撰写了关于印度数学学术的文章。他也试图理解几个世纪前这些神秘的算法。尽管通过他的视角瞥见数学史提醒了我文化差异可能会使像我这样的人难以理解像平伽罗这样的人的工作,但这也让我对几个世纪前的比鲁尼感到惊讶的亲近感,他像我一样试图理解数学和以前实践数学的人。