在小学阶段背过圆周率的同学对这节的标题应该不陌生。π(3.14159…)是大家熟悉的普通无理数,但也是非常神秘的一组数字,例如几个世纪以来,埃及考古学家和神秘主义追随者一直痴迷于胡夫金字塔暗藏的圆周率之谜。因为该金字塔的塔基周长和高的比例是 1760/280,离 2π 只有小于 0.05%的差距。另外,它在许多电影里面也出现过,作为推动剧情的重要元素,甚至有一部美国惊悚电影直接以《圆周率》命名,而且这部电影还获得了1998 年的圣丹斯国际电影节剧情片导演奖。每年的3月14日被定为“圆周率日”,在 2019 年联合国教科文组织第四十届大会上正式宣布每年的 3 月 14 日是“国际数学日”。
从古到今,数学家们都在对圆周率的计算孜孜以求。出现了众多计算方法。其中印度数学家尼拉坎特哈发现的一个可用于计算圆周率π近似值的无穷级数(尼拉坎特哈级数)算是比较简单的了。该级数的展开公式如下:
这个级数的收敛比较快,按照规律迭代计算若干次,结果就与π值非常接近。在python的IDLE环境下输入是这样的:
>>> 3+4/(2*3*4)-4/(4*5*6)+4/(6*7*8)-4/(8*9*10)+4/(10*11*12)
3.1427128427128426
那么julia该怎样输入呢?这里首先要介绍一下数学表达式和运算符了。实际上,大多数编程语言中,表达式都是一项基础功能,而且基本由操作数、运算符和括号等组成,它的书写方式、运算符、运算顺序等与数学中的基本一致。
算术表达式是通过算术运算符来运算的,又称为数值表达式。这里列举了基本的算术运算符和使用示例,见表:
描述 |
Python |
julia |
说明 |
加法运算 |
+ |
+ |
|
减法运算 |
− |
− |
|
乘法运算 |
* |
* |
|
除法运算 |
/ |
/ |
|
取模运算,返回除法的余数 |
% |
% |
|
整除运算(截断除法) |
// |
div |
Python:12//10=1 Julia:div(12,10)=1 |
幂运算,返回x的y次幂 |
** |
^ |
Python:a**2=4 Julia:a^2=4 |
简单来说,julia和python大多数运算符是相同的。所以,上面的圆周率计算,用julia来计算也与python基本上没什么差别:
julia> 3+4/(2*3*4)-4/(4*5*6)+4/(6*7*8)-4/(8*9*10)+4/(10*11*12)
3.1427128427128426
不过使用手工输入算式计算圆周率,仍然比较麻烦。在学习了后面的课程循环结构的程序设计之后,就可以编写程序自动进行计算,充分发挥计算机的优势。