首页 > 其他分享 >矩阵

矩阵

时间:2024-04-25 13:12:18浏览次数:19  
标签:matrix int mat 矩阵 转置 乘法

矩阵的定义:

矩阵(matrix)其实就是一个二维数组,第 \(i\) 行 \(j\) 列的元素即为 \(a_{i,j}\)

矩阵的运算:

加减:

它们均为逐个元素进行。只有同型矩阵之间可以对应相加减。

转置:

矩阵的转置,就是在矩阵的右上角写上转置「T」记号,表示将矩阵的行与列互换。

对称矩阵转置前后保持不变。

乘法:

矩阵的乘法是向量内积的推广。

矩阵相乘只有在第一个矩阵的列数和第二个矩阵的行数相同时才有意义。

设 \(A\) 为 \(P \times M\) 的矩阵,\(B\) 为 \(M \times Q\) 的矩阵,设矩阵 \(C\) 为矩阵 \(A\) 与 \(B\) 的乘积,

其中矩阵 \(C\) 中的第 \(i\) 行第 \(j\) 列元素可以表示为:

\(C_{i,j}= \sum^{M}_{k=1}A_{i,k}*B_{k,j}\)

其实就相当于一个线性方程组。

注意:矩阵乘法满足结合律,但不满足交换率

幂:

矩阵的幂 \(A^k\) 即为 \(k\) 个 \(A\) 相乘。

因为矩阵乘法满足结合律所以我们可以使用快速幂来优化。

时间复杂度:\(O(n^3 \log k)\)

代码:

#include<bits/stdc++.h>
#define int long long 
using namespace std;

const int N=100+10,mod=1e9+7;
int n;

struct matrix{
	int a[N][N];
	matrix(){
		memset(a,0,sizeof(a));
	}
	matrix operator *(const matrix &T){
		matrix res;
		for(int i=1;i<=n;i++){
			for(int k=1;k<=n;k++){
 				for(int j=1;j<=n;j++){
					res.a[i][j]+=T.a[k][j]*a[i][k];
					res.a[i][j]%=mod;
				}
			}
		}
		return res;
	}
	matrix qpow(int k){
		matrix ans,ret;
		for(int i=1;i<=n;i++)ans.a[i][i]=1;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				ret.a[i][j]=a[i][j];
			}
		}
		while(k){
			if(k&1)ans=ret*ans;
			ret=ret*ret;
			k>>=1;
		}
		return ans;
	}
}mat;

signed main(){
	std::ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	int k;
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>mat.a[i][j];
			mat.a[i][j]%=mod;
		}
	}
	matrix res=mat.qpow(k);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<res.a[i][j]<<" ";
		}
		cout<<"\n";
	}
	
	return 0;
} 

标签:matrix,int,mat,矩阵,转置,乘法
From: https://www.cnblogs.com/little-corn/p/18157444

相关文章

  • 二维矩阵、关键功能、关键质量测试
    答题纸 1、 绘制需求层次-需求方面二维矩阵。 功能质量约束业务级需求在线的房屋租赁系统,完善的房屋匹配机制。 可用性、可靠性、安全性、房源、需要移动端和网页端用户级需求用户:租赁者、管理员、房主房主:即使看到房屋的看房信息。......
  • Python Numpy 矩阵运算
    目录1前言2点积与矩阵乘法2.1np.dot()2.2np.matmul()和@2.3np.multiply和*3矩阵的逆4Ref1前言Python中经常涉及到矩阵运算,其借助于Numpy库进行,因此本文记录一些基于Numpy的矩阵运算2点积与矩阵乘法矩阵的点积(dotproduct),又称为内积(innerproduct)$a=(x_1,y_1)......
  • 基于EP4CE6F17C8的FPGA矩阵键盘实例(另类方法)
    一、电路模块电路模块参见“基于EP4CE6F17C8的FPGA矩阵键盘实例”部分。二、实验代码本例使用6个数码管依次显示按下按键的键值,每位显示的值可从0~F,对应16个矩阵按键。按键reset为复位键,代码使用Verilog编写,具体如下。先编写数码管实现显示字形解码的程序,模块名称为seg_decode......
  • 2024年GPLT团体程序设计比赛L2-D吉利矩阵题解
    只能说比赛时前期做得太慢了,后面导致题目只能捞点分数(IOI赛制),当时这道题是我不剪枝DFS拿了4分,压线拿铜牌!考完试一做,发现是个大水题(bushi)主要原理:DFS(深度优先搜索)+剪枝名言:学搜索核心就是学剪枝废话不说了,见代码点击查看代码//原理:DFS+剪枝#include<bi......
  • 变换矩阵的理解
    用于表示同一世界在不同坐标系下的坐标值为了方便理解,建议先看线性代数的本质--基变换旋转矩阵这里变换矩阵,为了方便,我们先只考虑旋转\(R^{imu}_{global}\)的列向量是imu坐标系的基向量在global坐标系下的坐标表示,将imu坐标系下的坐标与R相乘,得到同一个点在global......
  • lc54 螺旋矩阵
      publicList<Integer>spiralOrder(int[][]matrix){intl=0;intr=matrix[0].length-1;intu=0;intd=matrix.length-1;List<Integer>list=newArrayList<>();while(l<=r&am......
  • 矩阵求导(一)
    前言在大学的微积分课程中,我们学习过关于标量函数的导数。但是当我们求解一个多元函数的极值时,单独一个自变量的偏导数往往不能告诉我们太多信息,于是我们有一种天然的想法是要把每个自变量的偏导数放在一起,看看他们的联合效果如何。这个过程其实是一个向量求导的过程。也就是说,我......
  • 1050 螺旋矩阵
    和力扣上一道题差不多,不过的当时没写出来,这次出来了。注释写好了。#include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f3f3f3f;#definelllonglongintarr[100010];inta[10010][10010];intdx[]={0,1,0,-1};intdy[]={1,0,-1,0};intmain(){ in......
  • 游游的you矩阵(携程24秋招研发岗第一批)
    题面游游拿到了一个字符矩阵,她想知道有多少个三角形满足以下条件:三角形的三个顶点分别是y、o、u字符。三角形为直角三角形,且两个直角边一个为水平、另一个为垂直。输入第一行输入两个正整数n,m,用空格隔开,代表矩阵的行数和列数。接下来的n行,每行输入一个长度为m的字......
  • 卷积/池化、全连接、矩阵乘法/行列式乘法
    卷积https://zhuanlan.zhihu.com/p/76606892不考虑padding填充input矩阵,左边是卷积核,右边是输入:\[\left[\begin{matrix}1&2\\3&4\\\end{matrix}\right]*\left[\begin{matrix}11&22&33\\44&55&66\\77&88&99......