矩阵相加 / 矩阵相乘(详解版)

简介: 矩阵相加 / 矩阵相乘(详解版)

矩阵相加:


#j_m的作用是将列表转换成矩阵的形式
def j_m(m):
    for i in range(len(m)):           # 取0、1、2(至列表中列表的个数,用len()函数计算长度)
        for j in range(len(m[i])):          #取0、1、2(至列表中第一个列表的长度)
            print(m[i][j], end=" ")   #依次输出第i个列表中的第j个元素,每个末尾空一格
        print("")                           #每取完一个列表进行换行,准备输出下一个列表的那一行
m1 = [[3, 2, 2], [5, 3, 7], [2, 1, 1]]    #第一个矩阵
m2 = [[1, 2, 6], [1, 6, 7], [9, 2, 1]]           #第二个矩阵
j_m(m1)                                   #调用函数将第一个矩阵的列表变成实际矩阵形式并打印
print("------------")                            #打印分隔符
j_m(m2)                                   #调用函数将第二个矩阵的列表变成实际矩阵形式并打印
print("------------")                            #打印分隔符
t = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]                #创建一个由0组成的矩阵用于储存相加结果
for row in range(len(m1)):                       
    for col in range(len(m2)):                            #m1 m2对应元素进行相加
        t[row][col] = m1[row][col] + m2[row][col]   #将结果储存到t中,此时t仍为列表形式
j_m(t)                                                    #调用函数将t结果变成矩阵形式


运行结果:


3 2 2 
5 3 7 
2 1 1 
------------
1 2 6 
1 6 7 
9 2 1 
------------
4 4 8 
6 9 14 
11 3 2 


矩阵相乘:


#c_m的作用是将列表转换成矩阵的形式
def c_m(m):
    for i in range(len(m)):          # 取0、1、2(至列表中列表的个数,用len()函数计算长度)
        for j in range(len(m[i])):        #取0、1、2(至列表中第一个列表的长度)
            print(m[i][j], end=" ")  #依次输出第i个列表中的第j个元素,每个末尾空一格
        print("")                         #每取完一个列表进行换行,准备输出下一个列表的那一行
m1 = [[3, 2, 2], [5, 3, 7], [2, 1, 1]]    #第一个矩阵
m2 = [[1, 2, 6], [1, 6, 7], [9, 2, 1]]           #第二个矩阵
c_m(m1)                                   #调用函数将第一个矩阵的列表变成实际矩阵形式并打印
print("------------")                            #打印分隔符
c_m(m2)                                   #调用函数将第二个矩阵的列表变成实际矩阵形式并打印
print("------------")                            #打印分隔符
result = []                               #创建一个空列表用于储存结果
for row in range(len(m1)):
    rr = []                                   #创建每一行所在的空列表
    for col in range(len(m2[0])):         
        t = 0
        for k in range(len(m2)):
            t = t + m1[row][k] * m2[k][col]     #矩阵相乘的运算法则计算每个数字结果并赋值给t
        rr.append(t)                       #将元素储存在当前行所在列表中
    result.append(rr)                           #将此行结果储存在结果列表中
c_m(result)                                #最后调用函数,将result结果的列表转换成矩阵的形式


运行结果:


3 2 2 
5 3 7 
2 1 1 
------------------
1 2 6 
1 6 7 
9 2 1 
------------------
23 22 34 
71 42 58 
12 12 20 
相关文章
|
1月前
使用多维数组将两个矩阵相加
【10月更文挑战第30天】使用多维数组将两个矩阵相加。
32 2
|
1月前
10x10 矩阵
【10月更文挑战第26天】10x10 矩阵。
13 2
|
7月前
|
人工智能 小程序 BI
矩阵的转置、加和乘法写入C++
矩阵的转置、加和乘法写入C++
70 0
|
7月前
L1-048 矩阵A乘以B
L1-048 矩阵A乘以B
59 0
|
7月前
|
C++
各位相加(C++)
各位相加(C++)
34 1
|
算法
矩阵的加法
矩阵的加法
55 0
第3章 数组与矩阵——3.3 矩阵元素的运算(1)
第3章 数组与矩阵——3.3 矩阵元素的运算(1)
第3章 数组与矩阵——3.3 矩阵元素的运算(2)
第3章 数组与矩阵——3.3 矩阵元素的运算(2)
7-93 矩阵A乘以B
7-93 矩阵A乘以B
129 0
|
算法
一元多项式相加问题(两种方法)
一元多项式的相加问题,主要运用了线性结构的合并,在合并线性结构的基础上,增加判断,所以我们可以将这个问题理解为一个复杂的线性表合并问题
258 0
一元多项式相加问题(两种方法)