如何用C++复数类实现矩阵运算

avatar
作者
猴君
阅读量:0

在 C++ 中,你可以使用 std::complex 类来表示复数

#include <iostream> #include <vector> #include <complex>  using namespace std;  typedef complex<double> Complex; typedef vector<vector<Complex>> Matrix;  Matrix multiply(const Matrix &A, const Matrix &B) {     int rows_A = A.size();     int cols_A = A[0].size();     int rows_B = B.size();     int cols_B = B[0].size();      if (cols_A != rows_B) {         throw invalid_argument("矩阵 A 的列数必须等于矩阵 B 的行数");     }      Matrix result(rows_A, vector<Complex>(cols_B, Complex(0, 0)));      for (int i = 0; i < rows_A; ++i) {         for (int j = 0; j < cols_B; ++j) {             for (int k = 0; k < cols_A; ++k) {                 result[i][j] += A[i][k] * B[k][j];             }         }     }      return result; }  int main() {     Matrix A = {         {Complex(1, 2), Complex(3, 4)},         {Complex(5, 6), Complex(7, 8)}     };      Matrix B = {         {Complex(9, 10), Complex(11, 12)},         {Complex(13, 14), Complex(15, 16)}     };      Matrix result = multiply(A, B);      for (const auto &row : result) {         for (const auto &elem : row) {             cout << elem << " ";         }         cout << endl;     }      return 0; } 

这个程序首先定义了一个 Matrix 类型,它是一个二维向量,其元素为 Complex 类型。然后,我们实现了一个名为 multiply 的函数,它接受两个矩阵作为参数并返回它们的乘积。最后,在 main 函数中,我们创建了两个矩阵并计算它们的乘积。

注意:这个程序没有进行任何错误检查,例如检查矩阵是否为空或具有相同的行数和列数。在实际应用中,你可能需要添加这些检查以确保程序的健壮性。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!