矩阵运算:C++ 代码实现
矩阵运算:C++ 代码实现
概述
矩阵运算在数学和计算机科学领域中有着广泛的应用。本篇博客将介绍矩阵的基本运算(加、减、乘),并提供相应的 C++ 代码实现。文章还涵盖了矩阵运算的规则和示例,帮助读者更好地了解矩阵运算的概念和应用。
矩阵运算规则
矩阵加减法
- 运算规则:只有当参与运算的两个矩阵的行数和列数都相同时,才能进行加减运算。
- 结果矩阵:结果矩阵的行列数与参与运算的矩阵相同。
- 运算公式:
Cij = Aij + Bij(加法) 或Cij = Aij - Bij(减法),其中Cij表示结果矩阵C的第i行第j列元素,Aij和Bij分别表示矩阵A和B的第i行第j列元素。
矩阵乘法
- 运算规则:只有当矩阵
A的列数等于矩阵B的行数时,才能进行矩阵乘法。 - 结果矩阵:结果矩阵的行数等于矩阵
A的行数,列数等于矩阵B的列数。 - 运算公式:
Cij = Σ(k=1 to m) Aik * Bkj,其中Cij表示结果矩阵C的第i行第j列元素,Aik表示矩阵A的第i行第k列元素,Bkj表示矩阵B的第k行第j列元素。
C++ 代码实现
#include<bits/stdc++.h>
using namespace std;
const int N = 25;
int tt, p;
struct Matrix{
int n, m;
int a[N][N];
Matrix operator+(Matrix &b){
Matrix t;
memset(t.a, 0, sizeof t.a);
if(n != b.n || m != b.m){
t.n = t.m = -1;
return t;
}
t.n = n;
t.m = m;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
t.a[i][j] = a[i][j] + b.a[i][j];
return t;
}
Matrix operator-(Matrix &b){
Matrix t;
memset(t.a, 0, sizeof t.a);
if(n != b.n || m != b.m){
t.n = t.m = -1;
return t;
}
t.n = n;
t.m = m;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
t.a[i][j] = a[i][j] - b.a[i][j];
return t;
}
Matrix operator*(Matrix &b){
Matrix t;
memset(t.a, 0, sizeof t.a);
if(m != b.n){
t.n = t.m = -1;
return t;
}
t.n = n;
t.m = b.m;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= b.m; ++j)
for(int k = 1; k <= m; ++k)
t.a[i][j] += a[i][k] * b.a[k][j];
return t;
}
void print(){
if(n == -1 && m == -1){
printf('error\n');
return;
}
printf('%d %d\n', n, m);
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= m; ++j)
printf('%d ', a[i][j]);
printf('\n');
}
}
} m[N], ans;
int main() {
scanf('%d%d', &tt, &p);
for(int i = 1; i <= tt; ++i){
scanf('%d%d', &m[i].n, &m[i].m);
for(int r = 1; r <= m[i].n; ++r)
for(int s = 1; s <= m[i].m; ++s)
scanf('%d', &m[i].a[r][s]);
}
for(int i = 1; i <= p; ++i){
int op, r, s;
scanf('%d%d%d', &op, &r, &s);
if(op == 1)
ans = m[r] + m[s];
else if(op == 2)
ans = m[r] - m[s];
else if(op == 3)
ans = m[r] * m[s];
ans.print();
}
return 0;
}
示例
假设我们有两个矩阵 A 和 B:
矩阵 A:
1 2 3
4 5 6
矩阵 B:
7 8
9 10
11 12
加法
矩阵 A + 矩阵 B = error,因为矩阵 A 和 B 的列数不同,无法进行加法运算。
减法
矩阵 A - 矩阵 B = error,因为矩阵 A 和 B 的列数不同,无法进行减法运算。
乘法
矩阵 A * 矩阵 B =
58 64
139 154
总结
本文介绍了矩阵的基本运算(加、减、乘),并提供了相应的 C++ 代码实现。矩阵运算在很多领域中都有重要的应用,希望本文能帮助读者更好地理解和运用矩阵运算。
原文地址: http://www.cveoy.top/t/topic/fPpq 著作权归作者所有。请勿转载和采集!