联系我们 - 广告服务
您的当前位置:官网首页 > 资讯 > 时局 >

Python实现矩阵相乘的三种方法小结

来源: 编辑: 时间:2019-08-21
导读:

问题描述

分别实现矩阵相乘的3种算法,比较三种算法在矩阵大小分别为22 2222 22, 23 2323 23, 24 2424 24, 25 2525 25, 26 2626 26, 27 2727 27, 28 2828 28, 29 2929 29时的运行时间与MATLAB自带的矩阵相乘的运行时间,绘制时间对比图。

解题方法

本文采用了以下方法进行求值:矩阵计算法、定义法、分治法和Strassen方法。这里我们使用Matlab以及Python对这个问题进行处理,比较两种语言在一样的条件下,运算速度的差别。

编程语言

Python

具体代码

#-*- coding: utf-8 -*-
from matplotlib.font_manager import FontProperties
import numpy as np
import time
import random
import math
import copy
import matplotlib.pyplot as plt
#n = [2**2, 2**3, 2**4, 2**5, 2**6, 2**7, 2**8, 2**9, 2**10, 2**11, 2**12]
n = [2**2, 2**3, 2**4, 2**5, 2**6, 2**7, 2**8, 2**9, 2**10, 2**11]
Sum_time1 = []
Sum_time2 = []
Sum_time3 = []
Sum_time4 = []
for m in n:
 A = np.random.randint
 B = np.random.randint
 A1 = np.mat
 B1 = np.mat
 time_start = time.time
 C1 = A1*B1
 time_end = time.time
 Sum_time1.append
 C2 = np.zeros
 time_start = time.time
 for i in range:
 for k in range:
 for j in range:
 C2[i, j] = C2[i, j] + A[i, k] * B[k, j]
 time_end = time.time
 Sum_time2.append
 A11 = np.mat
 A12 = np.mat
 A21 = np.mat
 A22 = np.mat
 B11 = np.mat
 B12 = np.mat
 B21 = np.mat
 B22 = np.mat
 time_start = time.time
 C11 = A11 * B11 + A12 * B21
 C12 = A11 * B12 + A12 * B22
 C21 = A21 * B11 + A22 * B21
 C22 = A21 * B12 + A22 * B22
 C3 = np.vstack), np.hstack)))
 time_end = time.time
 Sum_time3.append
 time_start = time.time
 M1 = A11 * 
 M2 =  * B22
 M3 =  * B11
 M4 = A22 * 
 M5 =  * 
 M6 =  * 
 M7 =  * 
 C11 = M5 + M4 - M2 + M6
 C12 = M1 + M2
 C21 = M3 + M4
 C22 = M5 + M1 - M3 - M7
 C4 = np.vstack), np.hstack)))
 time_end = time.time
 Sum_time4.append
f1 = open
for ele in Sum_time1:
 f1.writelines + '
')
f1.close
f2 = open
for ele in Sum_time2:
 f2.writelines + '
')
f2.close
f3 = open
for ele in Sum_time3:
 f3.writelines + '
')
f3.close
f4 = open
for ele in Sum_time4:
 f4.writelines + '
')
f4.close
font = FontProperties
plt.figure
plt.subplot
plt.semilogx
plt.ylabel", fontproperties=font)
plt.xlabel
plt.title
plt.subplot
plt.semilogx
plt.ylabel", fontproperties=font)
plt.xlabel
plt.title
plt.subplot
plt.semilogx
plt.ylabel", fontproperties=font)
plt.xlabel
plt.title
plt.subplot
plt.semilogx
plt.ylabel", fontproperties=font)
plt.xlabel
plt.title
plt.figure
plt.semilogx
#plt.legend
plt.show

以上这篇Python实现矩阵相乘的三种方法小结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。

责任编辑:

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

网友评论:

在“\templets\demo\comments.htm”原来的内容全部删除,插入第三方评论代码,如果不需要评论功能,删除comments.html里面的内容即可
推荐使用友言、多说、畅言(需备案后使用)等社会化评论插件

Copyright © 2018 k8凯发国际娱乐k8凯发国际娱乐-k8凯发国际娱乐下载-k8凯发官方 All Rights Reserved Power by DedeCms
本站所有资讯来源于网络 如有侵权请联系QQ:9490489
Top