方阵运算模板(C++实现)

1 概述

  由 m × n m \times n m×n个数 a i j a_{ij} aij排成的 m m m n n n列的数表称为 m m m n n n列的矩阵,简称 m × n m \times n m×n矩阵。记作:
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n a 31 a 32 ⋯ a 3 n ⋯ ⋯ ⋯ a m 1 a m 2 ⋯ a m n ] \mathbf{A}=\left[\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 n} \\ a_{21} & a_{22} & \cdots & a_{2 n} \\ a_{31} & a_{32} & \cdots & a_{3 n} \\ \cdots & \cdots & & \cdots \\ a_{m 1} & a_{m 2} & \cdots & a_{m n} \end{array}\right] A=a11a21a31am1a12a22a32am2a1na2na3namn
  这 m × n m \times n m×n个数称为矩阵 A A A的元素,简称为元,数 a i j a_{ij} aij位于矩阵 A A A的第 i i i行第 j j j列,称为矩阵 A A A ( i , j ) (i,j) (i,j)元,以数 a i j a_{ij} aij ( i , j ) (i,j) (i,j)元的矩阵可记为 ( a i j ) (a_{ij}) (aij) ( a i j ) m × n (a_{ij})_{m \times n} (aij)m×n m × n m \times n m×n矩阵 A A A也记作 A m n A_{mn} Amn
  元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于 n n n的矩阵称为 n n n阶矩阵或 n n n阶方阵。

2 加法运算

   ( a i j ) n × n + ( b i j ) n × n = ( a i j + b i j ) n × n (a_{ij})_{n \times n}+(b_{ij})_{n \times n}=(a_{ij}+b_{ij})_{n \times n} (aij)n×n+(bij)n×n=(aij+bij)n×n

3 减法运算

   ( a i j ) n × n − ( b i j ) n × n = ( a i j − b i j ) n × n (a_{ij})_{n \times n}-(b_{ij})_{n \times n}=(a_{ij}-b_{ij})_{n \times n} (aij)n×n(bij)n×n=(aijbij)n×n

4 乘法运算

   ( a i j ) n × n × ( b i j ) n × n = ( ∑ k = 1 n a i k × b k j ) n × n (a_{ij})_{n \times n} \times (b_{ij})_{n \times n}=(\sum_{k=1}^{n} a_{ik} \times b_{kj})_{n \times n} (aij)n×n×(bij)n×n=(k=1naik×bkj)n×n

5 C++实现

const int MAXN=15;
const int MOD=7;
int sz=2;
struct Matrix{
    int dt[MAXN][MAXN];
    Matrix(int tp=0){
        for(int i=1;i<=sz;i++){
            for(int j=1;j<=sz;j++){
                if(i==j) dt[i][j]=tp;
                else dt[i][j]=0;
            }
        }
    }
    Matrix operator+(const Matrix& a){
        Matrix res;
        for(int i=1;i<=sz;i++){
            for(int j=1;j<=sz;j++){
                res.dt[i][j]=(dt[i][j]+a.dt[i][j])%MOD;
            }
        }
        return res;
    }
    Matrix operator-(const Matrix& a){
        Matrix res;
        for(int i=1;i<=sz;i++){
            for(int j=1;j<=sz;j++){
                res.dt[i][j]=(dt[i][j]-a.dt[i][j])%MOD;
            }
        }
        return res;
    }
    Matrix operator*(const Matrix& a){
        Matrix res;
        for(int i=1;i<=sz;i++){
            for(int j=1;j<=sz;j++){
                int sum=0;
                for(int k=1;k<=sz;k++){
                    sum=(sum+dt[i][k]*a.dt[k][j])%MOD;
                }
                res.dt[i][j]=sum;
            }
        }
        return res;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值