写点什么

数列找规律的问题

用户头像
oldj
关注
发布于: 2020 年 05 月 15 日
数列找规律的问题

一些数学作业中,经常有给定一个数列的前几项,让你寻找规律,填写下一项的问题。比如这样:


请填写数列的下一项:1, 3, 5, 7, ____


这种题目一般不会太难,比如上面这题,我们可以合理地推测这是一个等差数列,因此下一项是 9。


回答这类题目的时候,我们心中通常会有一些默认的假设,比如假设题目不会太超纲,数列的规律也不会太复杂,不然的话,这类题目恐怕就没法简单地回答了。


问题


前几日,我在网络上看到一个图片,就对上面的题目给出了一个有点搞笑却又有理有据的回答:



作者说,数列 1, 3, 5, 7 的下一项是 217341,因为这个数列的规律(通项公式)是:



我写代码验证了一下,这个公式是正确的,如下:


const f = (x) => 18111/2 * Math.pow(x, 4) 		- 90555 * Math.pow(x, 3) 		+ 633885/2 * x * x 		- 452773 * x 		+ 217331
console.log(f(1))console.log(f(2))console.log(f(3))console.log(f(4))console.log(f(5))
复制代码


执行,输出结果为:


1357217341
复制代码


所以说,数列 1, 3, 5, 7 的下一项,完全可以不是 9,而是一个奇怪而复杂的数字。


笑过之后,我不禁在想,这个通项公式是怎么得到的呢?还有其他函数有这样的效果吗?


探索


一番思考之后,我发现答案其实很简单,如果把数列的序号以及值看做坐标变量 x、y,那么这其实就是给定几个散点,求一条拟合曲线的问题,这样的公式完全可以根据需要算出来,而且有无穷多个。


就以上面的公式为例,可以看到,它是一个一元四次多项式,如果我们把 这样的常量用字母来代替的话,这个函数可以写成下面的一般形式:



然后,根据已知数列,我们有:


也即:

这是一个很普通的五元一次方程组,其中第五个等式的值即是数列第 5 项 的值。


在我们最初的解答中有 ,将其代入方程组,可以解得:



即:


可以看到,这就是一个简单的等差数列。


在这个五元一次方程组的基础上,我们可以继续前进,比如构造出一个公式,让数列的前四项是 1, 3, 5, 7,而第五项是任意我们想要的值。今年是 2020 年,就让我们来构造一个让数列的第五项是 2020 的公式吧,操作很简单,将方程组第五个等式右侧的问号换成 2020 即可:

解之,得:

即:


你可以验证一下,在这个公式下, 的前五项值分别为:1, 3, 5, 7, 2020


甚至,你也可以构造出这样的公式:



在这个公式下,数列的前五项将是:1, 3, 5, 7, 123456789


也就是说,你想让第五项等于几都行,可以是 -1、233333333、π、,甚至还可以是虚数,你所要做的,就是将想得到的数字代入上面的五元一次方程组,解出这个方程,从而得到通项公式 各项的参数。


这儿为了简单起见, 函数中使用的是多项式,如果你想弄得复杂点, 中也可以使用指数函数、三角函数等等。当然,弄得太复杂的话可能会很难解出方程中常数的值来,如果你只是想凑一个公式,让数列的下一项得到任意指定的值,那么多项式就足够了。


另外,任意长度的数列找规律都可以使用这个方法,原因上面说了,这本质上就是一个给定若干散点求拟合函数的问题,使用拉格朗日插值法等方法,总是能找到符合要求的多项式函数。


小结


下次再看到数列找规律的题目,你就知道啦,从理论上来说,你完全可以任意填写一个数字,比如你的生日,然后给老师看这篇文章,告诉老师你可以给出对应的通项公式来。当然,如果你真的这么做,你有很大的概率会被扣分,所以正式考试的时候还是按题意来回答吧。


最后,关于这个数列的问题,我也做了一个在线演示,你可以在其中随意填写数字,并生成对应的通项公式,欢迎点击试玩


---

注:本文首发于我的博客

发布于: 2020 年 05 月 15 日阅读数: 55
用户头像

oldj

关注

写作-爱好者。 2011.04.19 加入

程序员,科幻迷。

评论

发布
暂无评论
数列找规律的问题