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

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

矩阵相加:


#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 
目录
打赏
0
0
0
0
10
分享
相关文章
实现两个N*N矩阵的乘法,矩阵由一维数组表示
实现两个N*N矩阵的乘法,矩阵由一维数组表示。 先介绍一下矩阵的加法: 1 void Add(int rows, int cols) 2 { 3 for(int i= 0;i
1053 0
7-93 矩阵A乘以B
7-93 矩阵A乘以B
149 0
|
9月前
L1-048 矩阵A乘以B
L1-048 矩阵A乘以B
69 0
矩阵的转置、加和乘法写入C++
矩阵的转置、加和乘法写入C++
87 0
求矩阵的幂的一个好方法
设 $\dps{A=\sex{\ba{ccc}1&0&0\\ -1&0&1\\ 0&1&0\ea}}$, 求 $A^{100}$. 解答: 易知 $A$ 的特征多项式为 $f(\lambda)=|\lambda E-A|=(\lambda+1)(\lambda -1)^2$.
661 0
数据结构实践——稀疏矩阵相加
本文针对数据结构基础系列网络课程(5):数组与广义表的实践项目。 【项目 - 稀疏矩阵相加】   采用三元组存储稀疏矩阵,设计两个稀疏矩阵相加的运算算法 提示1:两个行数、列数相同的矩阵可以相加 提示2:充分利用已经建立好的算法库解决问题 [参考解答1](程序中使用的头文件”tup.h”见稀疏矩阵的三元组表示算法库)  #include <stdio.
1710 0
|
3月前
使用多维数组将两个矩阵相加
【10月更文挑战第30天】使用多维数组将两个矩阵相加。
45 2
|
9月前
|
C++
各位相加(C++)
各位相加(C++)
40 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等