离散数学:用python实现矩阵乘法与关系矩阵

目录

一、矩阵乘法

1.原理

2.代码实现

3.运行结果

二、关系矩阵

1.原理

2.代码实现

3.运行结果


一、矩阵乘法

1.原理

(自百度)

2.代码实现

L1, L2 = [], []  # L1表示第一个矩阵 L2表示第二个矩阵
L1_row, L12_cr, L2_col = map(int, input().split())  # 输入第一矩阵的行数、第一二矩阵的列行数、第二矩阵的列数

for i in range(L1_row):
    nums = list(map(int, input().split()))
    L1.append(nums)  # 依次输入每行的数字 把第一个矩阵形成二维列表 L1[0]表示该矩阵第一行的数字
for i in range(L12_cr):
    nums = list(map(int, input().split()))
    L2.append(nums)  # 同理 把第二个矩阵形成二维列表
res = []  # 给结果建立一个空列表
for a in range(L1_row):
    res.append([])  # 使该列表形成二维列表
    for b in range(L2_col):
        lis4 = []
        lis3 = L1[a]  # 通过循环依次获取第一个矩阵的每一行数字
        for c in range(L12_cr):
            lis4.append(L2[c][b])  # 依次获取第二个矩阵的每一列数字
        res_num = sum(map(lambda x, y: x*y, lis3, lis4))  # 矩阵乘法原理
        res[a].append(res_num)  # 填入 res[0]表示结果矩阵的第一行数字
for j in res:
    for i in j:
        print(i, end=' ')
    print()  # 输出

3.运行结果


二、关系矩阵

1.原理

输入均为1或0,与矩阵乘法原理相似,不同的是矩阵乘法中乘法换成逻辑乘,加法换成逻辑加。

2.代码实现

L1, L2 = [], []  # L1表示第一个矩阵 L2表示第二个矩阵
L1_row, L12_cr, L2_col = map(int, input().split())  # 输入第一矩阵的行数、第一二矩阵的列行数、第二矩阵的列数
for i in range(L1_row):
    nums = list(map(int, input().split()))
    L1.append(nums)  # 依次输入每行的数字 把第一个矩阵形成二维列表 L1[0]表示该矩阵第一行的数字
for i in range(L12_cr):
    nums = list(map(int, input().split()))
    L2.append(nums)  # 同理 把第二个矩阵形成二维列表
res = []  # 给结果建立一个空列表
for a in range(L1_row):
    res.append([])  # 使该列表形成二维列表
    for b in range(L2_col):
        lis4 = []
        lis3 = L1[a]  # 通过循环依次获取第一个矩阵的每一行数字
        for c in range(L12_cr):
            lis4.append(L2[c][b])  # 依次获取第二个矩阵的每一列数字
        r = list(map(lambda x, y: x and y, lis3, lis4))
        for i in range(len(r)):
            if 1 in r:
                d = 1
            else:
                d = 0
        res[a].append(d)  # 填入 res[0]表示结果矩阵的第一行数字
for j in res:
    for i in j:
        print(i, end=' ')
    print()  # 输出

代码大致与矩阵乘法代码相同

3.运行结果

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值