天籁数学——数列篇(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項求和問題。
總結
以上是生活随笔為你收集整理的天籁数学——数列篇(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为Liferay Server分配Per
- 下一篇: PHPExcel常用方法汇总