在 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
函數中,我們創建了兩個矩陣并計算它們的乘積。
注意:這個程序沒有進行任何錯誤檢查,例如檢查矩陣是否為空或具有相同的行數和列數。在實際應用中,你可能需要添加這些檢查以確保程序的健壯性。