首页 > 解决方案 > 乘法矩阵

问题描述

我写了一个矩阵类,乘法有问题。我只想乘方阵,不知道如何处理。有人可以帮忙吗?下面的一些代码:

//mSize - matrix size, mP - matrix pointer
int mSize, *mP;

//constructor
matrix(){
    mP = NULL;
    mSize = 0;
}

 matrix operator*(const matrix & mat){
    matrix mul;
    mul.mSize = mat.mSize;
    mul.mP = new int[mul.mSize * mul.mSize];
    if(mSize == mat.mSize){
        for(int i = 0; i < mul.mSize * mul.mSize; i++){
            for(int j = 0; j < mul.mSize * mul.mSize; j++){
                for(int k = 0; k < mul.mSize * mul.mSize; k++){
                    mul.mP[i*j] += mP[i*k] * mat.mP[k*j];  <-- that line is not good but I don't know if only that
                }
            }
        }
    }else {
        cout << "error";
        exit(-1);
    }
    return mul;
}

标签: matrixmatrix-multiplication

解决方案


def matrixmulti(a,b):
    if len(a[0])==len(b):                          #check it
        result=[[]*len(a) for i in range(len(b))]  #create empty matrix
        value=0
        for i in range(len(a)):                    #row of the a
            for j in range(len(b[0])):             #column of the b
                for k in range(len(b)):            #row of the b 
                    value+=a[i][k]*b[k][j]
                result[i].append(value)
                value=0
        return result
    else:
        return False

a=[[1,2],
   [3,4]]

b=[[5,6],
   [7,8]]

print(matrixmulti(a,b))

这是一个python代码,如果不是方阵,它就会出错。我希望它能解决你的问题。我希望你能理解代码。


推荐阅读