Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我写了此算法以两种方式解析矩阵向量乘积:想象我有一个矩阵A nxn和一个向量X nx1
1)内积:Y11 = A11 * X11 + A12 * X21 + .... + A1n * n1依此类推 2)线性组合:Y = Colum1mn * X1 + Column2 * X2,依此类推 我这样做是因为我想比较谁是乘以Matrix-Vector最快的方法 n = [10000,9000,8000,7000,6000,5000,4000,3000,2000,1500,1000,800,500,300,100] 运行算法3次,取n的每个值取平均值, 得到该图 ,我是对的,由于乘积是如何在内存中保存的,内积是最快的,但是我运行了3次算法来绘制图点得到N = 7000的时间> N = 8000的时间> N = 9000的时间。我想知道为什么吗?我认为可能是计算机将开始缓慢地进行计算,但是如果我多次运行算法,它将使计算速度更快。但是我在前3次(总共10次)之后运行了7次算法,并且得到了大致相同的结果(这次n = 7000时间大约是130秒而不是150秒,但仍然是时间7000>时间8000>时间9000) 这是我写的代码 def Lineal_C(A,x,n): y=np.zeros(n) t = time.clock() for j in range(n): for i in range(n): y[i]=y[i]+A[i][j]*x[j][0] time_spent = time.clock() - t print ("%.10f sec" % (time_spent)+" n"+str(n)+" Lineal Combination ") def Inner_P(A,x,n): y=np.zeros(n) t = time.clock() for i in range(0,n): for j in range(n): y[i]=y[i]+A[i][j]*x[j][0] time_spent = time.clock() - t print ("%.10f sec" % (time_spent)+" n="+str(n)+" ------MatVectFila - Producto Interno--------") 更多&回答... |
![]() |
![]() |