在本节中,我们将对斐波那契数列中数值不超过 400 万的偶数项求和。

如果你不知道斐波那契是什么?

简单地说,它是一个从 0 开始的整数序列,其中每个数字都是前两个数字的和,当然前两个数字 0 和 1 除外(0、1、1、2、3、5、8、13、21、34、55、89......)。

该数列由斐波那契在 1202 年发表,最初并不包括 0。

实际上,早在几个世纪前,印度数学家就已经知道了这个数列。斐波那契数列在数学、计算机科学和生物学中都有应用。更多信息,请阅读维基百科上关于斐波那契数列的文章:http://en.wikipedia.org/wiki/Fibonacci_number。

黄金比率是一个无理数,具有与圆周率相当的特殊性质。

黄金比例的计算公式如下:

NumPy基础之斐波那契求和

为此,我们将使用以下方法:

  • sqrt
  • log
  • arange
  • astype
  • sum

斐波那契数列的递推关系有以下解法,其中涉及到黄金分割率:

NumPy基础之斐波那契求和

要做到这一点有六个步骤,让我们来看看是如何做到的。

首先要做的是计算黄金比例(见 http://en.wikipedia.org/wiki/Golden_ratio),也叫黄金分割或黄金分割率。

首先 我们将使用名为 ( sqrt ) 的方法计算 5 的平方根:

NumPy基础之斐波那契求和

第二步 接下来,我们需要找出低于 400 万的斐波那契数字的指数。

维基百科页面给出了计算公式,我们将使用该公式计算。

我们需要做的就是用 ( log ) 方法转换对数基数。我们不需要将结果四舍五入到最接近的整数。

这将在下一步自动完成:

NumPy基础之斐波那契求和

第三步 现在(arange)方法是一个非常简单的方法,很多人都知道。不过,为了完整起见,我们还是要在这里提一下:

NumPy基础之斐波那契求和

第四步 有一个方便的公式可以用来计算斐波那契数字。

我们需要黄金分割率和上一步的数组作为输入参数。

打印前九个斐波那契数,检查结果:

NumPy基础之斐波那契求和

我本可以用单元测试来代替打印语句。单元测试是测试一小段代码的测试,例如一个方法。这个配方的变体留给你作为练习。顺便说一下,这里我们不是从数字 0 开始。

第五步 转换为整数。这一步可有可无。我觉得最后得到一个整数结果很不错。好了,其实我是想给大家演示一下 astype() 方法:

NumPy基础之斐波那契求和

第六步 选择偶值项。本口诀要求我们现在选择偶值项。这对你来说应该很容易:

NumPy基础之斐波那契求和

你现在需要知道发生了什么?

在本节中,我们使用了以下方法:

● sqrt ● log ● arange ● astype ● sum

它们的说明如下:

方法名称 方法描述
sqrt() 该方法计算数组元素的平方根(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.sqrt.html)
log() 该方法计算数组元素的自然对数(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.log.html#numpy.log)
arange() 该方法创建一个指定范围的数组(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html)
astype() 该方法将数组元素转换为指定的数据类型(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.chararray.astype.html)
sum() 该方法计算数组元素之和(参见 http://docs.scipy.org/doc/numpy/reference/generated/numpy.sum.html)

参考文献。

布尔索引部分。