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

   2024-09-30 9130
核心提示:在 C++ 中,你可以使用 std::complex 类来表示复数#include iostream#include vector#include complexusing namespace std;typed

在 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 函数中,我们创建了两个矩阵并计算它们的乘积。

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

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号