当前位置: 首页 > news >正文

矩阵 - R

矩阵

矩阵的乘法运算

定义

\[A(a_{i,j})_{s\times m}= \left( \begin{matrix} a_{11} & a_{12}&...& a_{1m} \\ a_{21} & a_{22}&...& a_{2m} \\ \vdots & \vdots && \vdots\\ a_{s1} & a_{s2} & \cdots& a_{sm} \end{matrix} \right) B(b_{i,j})_{m\times n}= \left( \begin{matrix} b_{11} & b_{12}&...&b_{1n} \\ b_{21} & b_{22}&...&b_{2n} \\ \vdots&\vdots&&\vdots \\ b_{m1} & b_{m2} & \cdots&b_{mn} \end{matrix} \right)\\ \]

\[定义AB=C(c_{i,j})_{s\times n}\\ c_{i,j}=\sum_{k=1}^{m}A(i:k)\times B(k:j)=\sum_{k=1}^{m}a_{i,k}b_{k,j} \]

代码实现

以n级矩阵为例

通常采用结构体定义矩阵,方便运算

const int N=10010;
struct mat{int w[N][N];
};
mat mat_mul(mat x,mat y){mat res;memset(res.w,0,sizeof(res.w));for(int i=0;i<n;i++){for(int j=0;j<n;j++){for(int k=0;k<=n;k++){res.w[i][j]+=x.w[i][k]*y.w[k][j];}}}
}

性质

注意,矩阵乘法无交换律

1.结合律

\[(AB)C=A(BC) \]

矩阵快速幂

由于矩阵乘法存在结合律

因此便可以采用分治的思想,求一个矩阵的n次方

例题P1962 斐波那契数列

\[F_n = \left\{\begin{aligned} 1 \space (n \le 2) \\ F_{n-1}+F_{n-2} \space (n\ge 3) \end{aligned}\right. \]

请你求出 \(F_n \bmod 10^9 + 7\)​ 的值。

构造矩阵

\[\because \left( \begin{matrix} F_n&F_{n-1} \end{matrix} \right) = \left( \begin{matrix} F_{n-1}&F_{n-2} \end{matrix} \right) \left( \begin{matrix} 1&1\\ 1&0 \end{matrix} \right)\\ \therefore \left( \begin{matrix} F_n&F_{n-1} \end{matrix} \right) =\left( \begin{matrix} 1&1\\\end{matrix} \right)\left( \begin{matrix} 1&1\\ 1&0 \end{matrix} \right)^{n-2} \]

代码实现

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=1e9+7;
struct mat{ll a[2][2];
};
mat mat_mul(mat x,mat y){mat res;memset(res.a,0,sizeof(res.a));for(int i=0;i<2;i++){for(int j=0;j<2;j++){for(int k=0;k<2;k++){res.a[i][j]=(res.a[i][j]+x.a[i][k]*y.a[k][j])%mod;}}}return res;
}
ll mat_pow(ll n){mat res,base;base.a[0][0]=1;base.a[0][1]=1;base.a[1][0]=1;base.a[1][1]=0;memset(res.a,0,sizeof(res.a));res.a[0][0]=1;res.a[0][1]=1;while(n){if(n&1)res=mat_mul(res,base);base=mat_mul(base,base);n>>=1;}return res.a[0][0];
}
ll n;
int main(){scanf("%lld",&n);if(n<=2){printf("1");return 0;}printf("%lld",mat_pow(n-2));return 0;
}

练习

构造转移的矩阵即可

1.P1349 广义斐波那契数列

广义的斐波那契数列是指形如 \(a_n=p\times a_{n-1}+q\times a_{n-2}\) 的数列。

今给定数列的两系数 \(p\)\(q\),以及数列的最前两项 \(a_1\) 和 $ a_2$,另给出两个整数 \(n\)\(m\),试求数列的第 \(n\)\(a_n\)\(m\) 取模后的结果。

2.P1939 矩阵加速(数列)

已知一个数列 \(a\),它满足:

\[a_x= \begin{cases}1 & x \in\{1,2,3\}\\ a_{x-1}+a_{x-3} & x \geq 4 \end{cases} \]

\(a\) 数列的第 \(n\) 项对 \(10^9+7\) 取余的值。

3.P3390 【模板】矩阵快速幂

\(给定n\times n 的矩阵A,求A^k\)

http://www.sczhlp.com/news/228964/

相关文章:

  • Unreal:PixelStreaming 像素流送
  • 图片
  • Unreal:自定义配置DeveloperSettings
  • wordpress设置幻灯片淄博seo网络推广
  • 青海专业的网站建设公司泉州网站建设哪里优惠
  • 喷码机营销型网站网站建设流程精英
  • 提供建站服务的网络公司的比较固始城乡建设局的网站怎么打不开了
  • 网站收录提交工具稳定免费空间
  • phpcms网站logo外贸推广信邮件
  • 网站备案完成通知书网站建设需要学些什么
  • 淄博做网站跟优化现在进入东莞需要什么条件
  • 手机app设计网站现在个人做网站或者app还有收益
  • 企业网站建设联系电话手机网站怎样做解析
  • wordpress导入失败郑州专业网站推广优化公司
  • 石景山做网站的公司文库网站建设开发
  • 关于jsp网站开发的最新书籍百度小程序怎么进入
  • 厚街网站建设费用relive模板wordpress分享
  • 网站设计步骤包括哪些360网站安全检测
  • 工具seo哈尔滨seo优化服务商
  • 怎么样用ppt做网站网站在线统计代码
  • 服饰团购网站建设好用的免费建站网站
  • 网站数据展示西安网站 技术支持牛商网
  • 做网站能用思源黑体吗中国建筑工程网施工资料
  • 营销型网站设计wordpress评论白名单
  • 唯品会网站推广策略做外贸外文网站怎么做好
  • 自适应导航网站模板重庆网站推广工具
  • 中山专业门户网站制作咨询网页设计公司网站制作
  • 购买深圳网站定制开发外贸客户管理软件排名
  • 泉州网站制作网页企石做网站
  • 了解宿迁建设网站昵图网免费素材图库官网手机版