91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何用C++復數類實現矩陣運算

c++
小樊
85
2024-09-12 18:56:52
欄目: 編程語言

在 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 函數中,我們創建了兩個矩陣并計算它們的乘積。

注意:這個程序沒有進行任何錯誤檢查,例如檢查矩陣是否為空或具有相同的行數和列數。在實際應用中,你可能需要添加這些檢查以確保程序的健壯性。

0
古丈县| 湖北省| 龙口市| 荥经县| 南丰县| 环江| 广丰县| 皋兰县| 余姚市| 阳江市| 镇远县| 洛隆县| 宜兰市| 离岛区| 互助| 通道| 丹巴县| 衡南县| 锡林郭勒盟| 桦南县| 斗六市| 宣城市| 山西省| 石棉县| 南通市| 大姚县| 金湖县| 永登县| 荥阳市| 红河县| 温泉县| 上蔡县| 福贡县| 东城区| 东宁县| 上杭县| 古蔺县| 罗甸县| 灵寿县| 侯马市| 五常市|