• 矩阵乘法和斐波那契数列【清北学堂】


      这篇博客是一边听课一边写的

      两个矩阵做乘法的先决条件是一个矩阵的宽和另一个矩阵的高相等

      比如一个2*3的矩阵和一个3*4的矩阵就可以相乘

      乘出来的效果是这样的

      比如有个1*2的矩阵[ a b ]  和2*1的矩阵 [ c ]

                           [ d ]

      那乘出来的效果就是[ a*c+b*d ]

      好吧并不理解

      再比如[ a b ]  *  [ e f ]  =  [ ae+bg af+bh ]

         [ c d ]     [ g h ]      [ ce+dg cf+dh ]

      这样

      矩阵乘法可以用来求一些奇怪的递推式,如斐波那契数列和、斐波那契数列平方和等等

      比如求斐波那契平方和的矩阵乘法如下

      [ 1 1 3 3 1 ]  [ Sum ]

      [ 0 1 3 3 1 ]  [ (i-1)^3] 

      [ 0 0 1 2 1 ]  [ (i-1)^2]

      [ 0 0 0 1 1 ]  [ i-1 ]

      [ 0 0 0 0 1 ]  [ 1 ]

      两个矩阵相乘可以搞出斐波那契的平方和

      推导过程如下

      首先我们看到,在每一次循环中  Sum=Sum+i^3

      那么i^3怎么来的呢   肯定不能直接来,于是我们要往之前 的循环中找

      也就是找到i^3和(i-1)^3的联系

      容易推出 (i-1)^3 = i^3-3i^2+3i-1

      也就是说,为了推出i^3,我们需要(i-1)^3、(i-1)^2、i-1和1

      于是推出如上矩阵

      首先我们发现上式移项得出i^3=(i-1)^3+3i^2-3i+1

      又对上式进行配方  得到 (i-1)^3+3(i-1)^2+3(i-1)+1

      我们把左面的矩阵从下往上推导

      明确的知道我们需要一个1 所以 矩阵最下面除了对应 1的第五个空填1 其他的都是0

      再看倒数第二行    i=i-1+1  

      第三行   i^2=(i-1)^2+2*(i-1)+1

      以此类推  就酱

  • 相关阅读:
    luaPlus
    falagard cegui
    cegui 的透明纹理
    msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
    CEGUI
    SameText
    操作 Wave 文件(15): 合并与剪裁 wav 文件
    Delphi 的编码与解码(或叫加密与解密)函数
    操作 Wave 文件(13): waveOutGetVolume、waveOutSetVolume
    操作 Wave 文件(12): 使用 waveOut...重复播放 wav 文件
  • 原文地址:https://www.cnblogs.com/cellular-automaton/p/7189643.html
Copyright © 2020-2023  润新知