在 C++ 中,你可以使用 std::complex
類(lèi)來(lái)表示復(fù)數(shù)
#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 的列數(shù)必須等于矩陣 B 的行數(shù)");
}
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;
}
這個(gè)程序首先定義了一個(gè) Matrix
類(lèi)型,它是一個(gè)二維向量,其元素為 Complex
類(lèi)型。然后,我們實(shí)現(xiàn)了一個(gè)名為 multiply
的函數(shù),它接受兩個(gè)矩陣作為參數(shù)并返回它們的乘積。最后,在 main
函數(shù)中,我們創(chuàng)建了兩個(gè)矩陣并計(jì)算它們的乘積。
注意:這個(gè)程序沒(méi)有進(jìn)行任何錯(cuò)誤檢查,例如檢查矩陣是否為空或具有相同的行數(shù)和列數(shù)。在實(shí)際應(yīng)用中,你可能需要添加這些檢查以確保程序的健壯性。