一、矩阵
1 运算
1.1加减法
要求:两矩阵行列数完全一样。
1.2乘除法
要求:第一个矩阵的列数等于第二个矩阵的行数。
一个a行b列乘b行c列 = a行c列
乘法不满足交换律!
但是满足结合律:a×b×c=a×(b×c)a\times b\times c=a\times(b\times c)a×b×c=a×(b×c)
1.3 数乘
一个矩阵乘以一个数,等于矩阵中的每个数乘以这个数。
1.4 转置
原先的第一行变成第一列,以此类推。
2 单位元
在一个运算系统中,如果某个元素x和其他元素y做运算,结果依旧是y,那么x就称为这个运算系统中的“单位元”。
2.1 单位矩阵
其主对角线上的元素都是1,其余都是0。
例:
[100010001]\begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{bmatrix}
100010001
二、封装
使用重载运算符和结构体封装会使代码更简洁,同时易于更改。以下是封装代码;
#include<bits/stdc++.h>
#define ll long long
#define bug printf("---OK---")
#define pa printf("A: ")
#define pr printf("\n")
#define pi acos(-1.0)
using namespace std;
struct Mat{
ll a[105][105];
ll r,c;
Mat(ll _r=0,ll _c=0){
r=_r,c=_c;
memset(a,0,sizeof a);
if(c==0){
c=r;//构造一个方阵
}
}
void unit(){
//赋单位矩阵
memset(a,0,sizeof a);
for(int i=1;i<=r;i++){
a[i][i]=1;
}
}
Mat operator+(

本文介绍了矩阵的基本运算,如加减乘除、数乘和转置,以及单位元和单位矩阵的概念。重点展示了如何通过封装和重载运算符实现矩阵的高效计算,以解决斐波那契数列问题,利用矩阵快速幂算法求解特定数值的表达式。

6460

被折叠的 条评论
为什么被折叠?



