2 * 2 matix的乘法

时间:2019-11-17 14:17:59

标签: python-3.x python-3.7

m = [[3,5], [2,-2]]
n = [[-1,0], [11,3]]
ans = [[0,0], [0,0]]
for i in range(len(m)):
    for j in range(len(m[i])):
        ans[i][j] = (m[i][j] * n[i][j]) + (m[i][len(m)-j-1] * n[len(n)-i-1][j])
        print(ans[i][j], end="\t")
    print()

现在我的答案是错误的,我无法提出其他解决方案。

1 个答案:

答案 0 :(得分:0)

假设您要填充a [i] [j],则每个元素都是m的第i行和n列的第j列乘积的和。用python代码写的总和是:

a[i][j] = sum( m[i][s]*n[s][j] for s in range( len(m[i]) ) )

由于您使用的是2x2矩阵,所以这并不重要,但是矩阵的最终尺寸将取决于m和n的大小。

在您的示例中,您尝试了显式编写此总和。在这种情况下,我们无需为s求和,而是为相应的s值写出每一项。以下表达式有两个术语。

a[i][j] = m[i][0]*n[0][j] + m[i][1]*n[1][j]

似乎您想变得笼统,但是您不能不创建求和/循环,因为无论您以何种方式编写,它都只有两个术语。