c++ vector矩阵乘法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c++ vector矩阵乘法
矩阵乘法是线性代数中的一种基本操作,用来将两个矩阵相乘并
生成一个新的结果矩阵。
在C++中,我们可以使用vector来表示矩阵,并通过使用循环和索引操作来实现矩阵的乘法运算。
首先,我们需要定义一个Matrix类来表示矩阵。
在这个类中,我
们可以定义一个二维vector来存储矩阵的元素,并提供一些方法来获
取和设置矩阵的元素。
以下是一个简单的Matrix类的示例代码:```cpp
#include <iostream>
#include <vector>
class Matrix {
private:
std::vector<std::vector<int>> matrix;
public:
Matrix(int rows, int cols) {
matrix.resize(rows, std::vector<int>(cols, 0)); }
int getRows() {
return matrix.size();
}
int getCols() {
return matrix[0].size();
}
int getValue(int row, int col) {
return matrix[row][col];
}
void setValue(int row, int col, int value) { matrix[row][col] = value;
};
```
接下来,我们可以实现一个函数来执行矩阵乘法运算。
在这个函
数中,我们首先需要检查两个矩阵是否可以相乘,即第一个矩阵的列
数是否等于第二个矩阵的行数。
如果无法相乘,我们将抛出一个异常。
否则,我们可以创建一个新的结果矩阵,并使用嵌套的循环来计算每
个元素的值。
以下是一个简单的矩阵乘法函数的示例代码:
```cpp
Matrix matrixMultiplication(Matrix& matrix1, Matrix&
matrix2) {
if (matrix1.getCols() != matrix2.getRows()) {
throw std::invalid_argument("Matrix dimensions do not match");
int rows = matrix1.getRows();
int cols = matrix2.getCols();
int sharedDimension = matrix1.getCols();
Matrix result(rows, cols);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
int value = 0;
for (int k = 0; k < sharedDimension; k++) {
value += matrix1.getValue(i, k) * matrix2.getValue(k, j); }
result.setValue(i, j, value);
}
}
return result;
}
```
现在,我们可以在主函数中创建两个矩阵对象,并使用矩阵乘法函数来计算它们的乘积。
以下是一个简单的主函数示例:```cpp
int main() {
Matrix matrix1(2, 3);
matrix1.setValue(0, 0, 1);
matrix1.setValue(0, 1, 2);
matrix1.setValue(0, 2, 3);
matrix1.setValue(1, 0, 4);
matrix1.setValue(1, 1, 5);
matrix1.setValue(1, 2, 6);
Matrix matrix2(3, 2);
matrix2.setValue(0, 0, 7);
matrix2.setValue(0, 1, 8);
matrix2.setValue(1, 0, 9);
matrix2.setValue(1, 1, 10);
matrix2.setValue(2, 0, 11);
matrix2.setValue(2, 1, 12);
Matrix result = matrixMultiplication(matrix1, matrix2); std::cout << "Result matrix:" << std::endl;
for (int i = 0; i < result.getRows(); i++) {
for (int j = 0; j < result.getCols(); j++) {
std::cout << result.getValue(i, j) << " ";
}
std::cout << std::endl;
}
return 0;
}
```
在这个示例中,我们创建了两个矩阵对象matrix1和matrix2,并将它们的值设置为一些随机数。
然后,我们调用矩阵乘法函数matrixMultiplication来计算它们的乘积,并将结果保存在result矩阵中。
最后,我们使用循环遍历result矩阵,并将每个元素打印到控制台上。
以上就是使用C++和vector实现矩阵乘法的基本代码。
矩阵乘法是一个非常重要的操作,在许多科学计算和图形处理的领域中都有广泛的应用。
通过使用vector和适当的循环,我们可以在C++中很容易地实现矩阵乘法,从而进行更复杂的数值计算。