目录
在计算机科学中,矩阵乘法是一项基本而重要的运算,也是许多算法和应用中不可或缺的一部分。本文将介绍如何利用 C++ 语言实现矩阵乘法,并提供一个简单的示例。
什么是矩阵乘法?
矩阵乘法指的是将两个矩阵相乘得到一个新的矩阵的运算。给定两个矩阵 A 和 B,它们的乘积 C 是一个新的矩阵,其中 C 的第 i 行第 j 列的元素等于 A 的第 i 行与 B 的第 j 列对应元素的乘积之和。
算法实现
我们可以使用嵌套的循环来实现矩阵乘法。首先,我们定义一个函数 matrix_multiply
,该函数接受三个参数:两个输入矩阵 a
和 b
,以及保存结果的矩阵 res
。我们还需要传入矩阵的大小 n
,即矩阵的行数和列数。
#include <iostream>
#include <vector>
using namespace std;
void matrix_multiply(vector<vector<int>>& a, vector<vector<int>>& b, vector<vector<int>>& res, int n) {
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j) {
res[i][j] = 0;
for(int k = 0; k < n; ++k) {
res[i][j] += a[i][k] * b[k][j];
}
}
}
}
接着,在 main
函数中,我们初始化两个 3x3 的矩阵 a
和 b
,并调用 matrix_multiply
函数得到它们的乘积,保存在矩阵 res
中。最后,我们输出结果矩阵 res
。
int main() {
int n = 3;
vector<vector<int>> a = {{2, 1, 3}, {3, 2, 1}, {1, 1, 1}};
vector<vector<int>> b = {{2, 1, 3}, {3, 2, 1}, {1, 1, 1}};
vector<vector<int>> res(n, vector<int>(n));
matrix_multiply(a, b, res, n);
cout << "a * b:" << endl;
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j) {
cout << res[i][j] << " ";
}
cout << endl;
}
return 0;
}
结论
通过这样的实现,我们可以清晰地了解矩阵乘法的基本原理和实际编程过程。矩阵乘法是线性代数中的重要概念,在计算机图形学、机器学习等领域有着广泛的应用。希望这篇博客对你有所帮助!
希望这篇博客能够帮助你更好地理解矩阵乘法,并在实际应用中发挥作用。如果有任何问题,欢迎随时向我提问!
完整代码如下
//2.8.5矩阵乘法,c=a*b,其中ab为n*n矩阵
#include <iostream>
#include <vector>
using namespace std;
void matrix_multiply(vector<vector<int>>& a, vector<vector<int>>& b, vector<vector<int>>& res, int n) {
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j) {
res[i][j] = 0;
for(int k = 0; k < n; ++k) {
res[i][j] += a[i][k] * b[k][j];
}
}
}
}
int main() {
int n = 3;
vector<vector<int>> a = {{2, 1, 3}, {3, 2, 1}, {1, 1, 1}};
vector<vector<int>> b = {{2, 1, 3}, {3, 2, 1}, {1, 1, 1}};
vector<vector<int>> res(n, vector<int>(n));
matrix_multiply(a, b, res, n);
cout<<"a * b:"<<endl;
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j) {
cout<<res[i][j]<<" ";
}
cout<<endl;
}
return 0;
}