• 天籁数学——数列篇(1)


       

           好久没写博客了,这个系列就来聊聊数学,我们知道数学是一种工具,更是一种思想,在我们的日常生活和工作中都有广泛的应用。

           比如算法中有一种叫做“递推思想”,转化到数学上来说就是“数列”,而我们苦逼的coding,复杂度搞死也只能控制在O(N),但有没有

    想过对这种问题可以一针见血,一刀毙命,这就需要用到“数学”上的知识。猴子吃桃 问题就是一个活生生的例子,评论上给出了很好的解决方

    案,学习数学就应该能让它解决点实际上的问题,下面来推导一下。

         为了方便,将递推公式写成:

      an=2an-1+2  ①

    已知首项:a1=1

    将①变形得

     an+2=2(an-1+2)        ②

    由②可推导

     an-1+2=2(an-2+2)    ③

     an-2+2=2(an-3+2)    ④

       ...

     a3+2=2(a2+2)          ...

     a2+2=2(a1+2)          ...

    然后我们将这N-1项相乘,化简得

    an+2=2n-1(a1+2)  ⑤

    又因为 a1=1 则通项公式为

    an=2n-1*3-2        ⑥

    根据”递推公式“我们求出了”通项公式“,现在我们可以秒杀任何一天的桃子数量,现在又来问题了,如何求出前N天的桃子总和,在

    数列中对应的就是求前n项和的问题,在得知an的情况下,求Sn也是秒杀效果。

    ⑥式是典型的{nan+bn}模型,针对这个模型,我们拆分成{nan}+{bn},然后分别计算它们的前n项和,最后合并。

    <1>   3*2n-1 的前n项和为:   Sn=3*20+3*21+3*22+3*23+...+ 3*2n-1         

    变形⑦可知                  2Sn=3*21+3*22+3*23+...+3*2n                  ⑧

    ⑦-⑧得(错位相减)

                                     -Sn=3*20-3*2n

                             =>    Sn=3*2n-3                                            

    <2>  2的前n项和为: =>    Tn=2n

    综合两部分结果可知:Sm=3*2m-3-2m。

    最后我们推导出了 猴子吃桃 问题的前n项和,当你苦逼coding的时候,人家早已推导出了,而且复杂度宇宙第一...

    上面的场景只是想让大家知道数列对我们来说非常重要,后面我会拿算法上的题目用数学来KO,让你知道不懂数学简直就弱爆了

    作为数列专题篇,基础知识必不可少,同样我也可以巩固和复习,嘿嘿。

    在数列中:通项公式,递推公式,前n项和始终贯穿于数列学习的始终,首篇要了解下面几点:

    ①:  能够目测简单数列的通项公式。

            比如:1,4,9,16,..... 

                   1,0,1,0....

    ②:  能够根据递推公式求数列的通项公式,比如(猴子吃桃问题)

    ③:  能够根据数列的前n项和求数列的通项公式。

             an=    s1         (n=1)

                       sn-sn-1 (n>=2)

    ④: 能够求数列的前n项的和Sn

           常用方法:倒序相加,错位相减, 分项相消法(有技巧),倍数法。

    ⑤: 能够理解{an+bn},{anbn}模型的前N项求和问题。

  • 相关阅读:
    MongoDB
    Django配置实现数据库读写分离
    基于scrapy-redis的分布式爬虫
    增量式爬虫
    Pyhton网络爬虫之CrawlSpider
    Scrapy 之如何发送post请求
    Scrapy 之settings配置
    Scrapy 实现爬取多页数据 + 多层url数据爬取
    Scrapy 框架入门简介
    redis操作总结
  • 原文地址:https://www.cnblogs.com/huangxincheng/p/2674439.html
Copyright © 2020-2023  润新知