這篇部落格是一邊聽課一邊寫的
兩個矩陣做乘法的先決條件是乙個矩陣的寬和另乙個矩陣的高相等
比如乙個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
以此類推 就醬
斐波那契數列 矩陣乘法
f 1 1 f 2 1 f n f n 1 f n 2 n 2 且 n 為整數 題目描述 請你求出 f n mod 1000000007 的值。輸入輸出格式 輸入格式 第 1 行 乙個整數 n 輸出格式 第 1 行 f n mod 1000000007 的值 輸入輸出樣例 輸入樣例 1 5輸出樣例 ...
矩陣乘法 斐波那契數列II III IV
ii 求出斐波那契數列的第n項 1 n 2 31 模10000的值 iii 求出f n f n 2 f n 1 1模9973的值 iv 求出f n f n 2 f n 1 n 1模9973的值 f 1 f 2 1 ii 矩陣乘法,設矩陣 那麼顯然可以乘矩陣 得到矩陣 那麼得式子 a 即 a 1 同時...
矩陣乘法 求斐波那契數列
先簡單介紹一下矩陣乘法求斐波那契數列的原理 f n 是第n項的值。f 1 1 f 2 1 f n f n 1 n 2 下面的介紹是我從網上查到了,收益匪淺。分兩步推導 問題的求解就變成 二分法可用遞迴和非遞迴來求 下面是 定義矩陣 struct matrix 定義2 2的矩陣 void mul ma...