矩阵乘法

矩阵乘法

定义,设A是m×n矩阵,B是n×p矩阵,则C=A×B是一个m×p矩阵

性质:

A×B不一定等于B×A,

(A×B)×C=A×(B×C),

(A+B)×C=A×C+B×C

定义,设C=A×B,A是m×n矩阵,B是n×p矩阵,

Ci,j=1kn(Ai,k×Bk,j),其中(1im,1jp)

for(int i=1;i<=m;i++)
    for(int j=1;j<=p;j++)
        for(int k=1;k<=n;k++)
            c[i][j]+=a[i][k]*b[k][j];

考虑一种特殊情形,矩阵F×Q,其中Qn×n矩阵,F1×n矩阵
若是设F=F×Q,则F[i]=k=1nF[k]×Q[k,i],这里可以将其看作F中的第k个值会对F中的第i个值产生线性递推关系

列如Fib,因为Fibn=Fibn1+Fibn2,则我们可以构建矩阵
Fn=[Fibn,Fibn+1]
矩阵A=[0111]

Fn×A=[Fibn+1,Fibn+Fibn+1]=[Fibn+1,Fibn+2]=Fn+1
由此可见Fi×A=Fi+1。故F0×An=Fn,此时可以由快速幂计算An以达到用矩阵乘法加速递推的效果

我们定义F为状态矩阵,A为转移矩阵,满足以下条件的就可以考虑矩阵乘法加速

  1. F的每次递推是一个线性的,简单的递推关系
  2. F是一个简单的一维向量,该向量在每个时间单位发生一次变化
  3. 关于F的递推式始终不变
  4. 递推轮数很长但其实F的长度(每次转移时的有效长度)不大

A的构造方法:如果递推式中含有Fi+1[y]+=Fi[x]×b,bZ,则将A的第x行第y列赋值为b
当涉及到Fi+1[y]+=cc是一个固定常量,则我们可以考虑给A增加一个第0行,具体地把F[0]用起来设置F[0]=1,然后A[0][y]赋值为c即可

posted @   spdarkle  阅读(239)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示