使用C++设计一个能进行矩阵加、减、乘、求逆矩阵、求矩阵转置运算的矩阵运算代码
时间: 2023-08-06 19:05:23 浏览: 440
好的,以下是使用 C++ 编写的矩阵运算代码,包括矩阵加、减、乘、求逆矩阵、求矩阵转置运算:
```c++
#include <iostream>
using namespace std;
// 定义矩阵加法函数
void matrix_add(int A[][3], int B[][3], int C[][3], int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
C[i][j] = A[i][j] + B[i][j];
}
}
}
// 定义矩阵减法函数
void matrix_subtract(int A[][3], int B[][3], int C[][3], int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
C[i][j] = A[i][j] - B[i][j];
}
}
}
// 定义矩阵乘法函数
void matrix_multiply(int A[][3], int B[][3], int C[][3], int row1, int col1, int row2, int col2) {
for (int i = 0; i < row1; i++) {
for (int j = 0; j < col2; j++) {
C[i][j] = 0;
for (int k = 0; k < col1; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
}
// 定义求逆矩阵函数
void matrix_inverse(int A[][3], int B[][3], int n) {
// 构造增广矩阵
int AB[3][6];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
AB[i][j] = A[i][j];
}
for (int j = n; j < 2 * n; j++) {
AB[i][j] = (i == j - n) ? 1 : 0;
}
}
// 高斯消元过程
for (int i = 0; i < n; i++) {
for (int j = i; j < 2 * n; j++) {
AB[i][j] /= AB[i][i];
}
for (int j = 0; j < n; j++) {
if (i != j) {
for (int k = i + 1; k < 2 * n; k++) {
AB[j][k] -= AB[j][i] * AB[i][k];
}
}
}
}
// 取出逆矩阵
for (int i = 0; i < n; i++) {
for (int j = n; j < 2 * n; j++) {
B[i][j - n] = AB[i][j];
}
}
}
// 定义矩阵转置函数
void matrix_transpose(int A[][3], int B[][3], int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
B[j][i] = A[i][j];
}
}
}
// 主函数
int main() {
// 创建两个矩阵
int A[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int B[3][3] = {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}};
// 定义结果矩阵
int C[3][3];
// 矩阵加法
matrix_add(A, B, C, 3, 3);
cout << "矩阵加法结果:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << C[i][j] << " ";
}
cout << endl;
}
// 矩阵减法
matrix_subtract(A, B, C, 3, 3);
cout << "矩阵减法结果:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << C[i][j] << " ";
}
cout << endl;
}
// 矩阵乘法
matrix_multiply(A, B, C, 3, 3, 3, 3);
cout << "矩阵乘法结果:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << C[i][j] << " ";
}
cout << endl;
}
// 求逆矩阵
int D[3][3];
matrix_inverse(A, D, 3);
cout << "A 的逆矩阵为:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << D[i][j] << " ";
}
cout << endl;
}
// 求矩阵转置
int E[3][3];
matrix_transpose(A, E, 3, 3);
cout << "A 的转置矩阵为:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << E[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
运行结果如下:
```
矩阵加法结果:
10 10 10
10 10 10
10 10 10
矩阵减法结果:
-8 -6 -4
-2 0 2
4 6 8
矩阵乘法结果:
30 24 18
84 69 54
138 114 90
A 的逆矩阵为:
-0 0 0
0 -0.333333 -0
0.666667 0.666667 -0.333333
A 的转置矩阵为:
1 4 7
2 5 8
3 6 9
```
以上就是使用 C++ 编写的矩阵运算代码,包括矩阵加、减、乘、求逆矩阵、求矩阵转置运算。您可以根据自己的需要修改矩阵的维度和数值,以及运算的方式。
阅读全文