2013-02-21 46 views
0

你好(原谅我的英语),我对python的矩阵乘法有很大的怀疑,我创建了一个列表的列表并乘以一个缩放矩阵,这就是我所做的,我不能alparecer执行与索引的乘法运算问题,我用纸和铅笔检查,它的工作原理,我做了不好的事情,以适应索引或我是否错误容纳矩阵从一开始?在Python中的矩阵乘法

def main(): 
if len(sys.argv) > 1: 
    v = int(sys.argv[1]) 
else: 
    print "error python exe:" 
    print "\tpython <programa.py> <num_vertices>" 
A = [] 
for i in range(v): 
    A.append([0]*2) 
for i in range(v): 
    for j in range(2): 
     A[i][j] = input("v: ") 


print A 
    Escala(A) 

def Escala(A): 
    print "Escala" 
    sx = input("Sx: ") 
    sy = input("Sy: ") 
    S = [(sx,0),(0,sy)] 
    print S 
    M = mult(S,A) 
    print M 



def mult(m1,m2): 
M = zero(len(m1),len(m2[0])) 
    for i in range(len(m2)): 
     for j in range(len(m2[0])): 
      for k in range(len(m1)): 
       M[i][j] += m1[k][j]*m2[k][j] 
    print M     
    return M 

def zero(m,n): 
# Create zero matrix 
new_matrix = [[0 for row in range(n)] for col in range(m)] 
return new_matrix 
+1

是相当肯定[DJV(http://stackoverflow.com/a/15003989/432913)的答案是正确的。您可能想要在进行乘法之前检查矩阵的维数是否允许乘法。 – will 2013-02-21 13:54:52

+1

你为什么不使用numpy? – 2013-02-21 14:24:40

回答

5

这似乎是我错了:

M[i][j] += m1[k][j]*m2[k][j] 

它不应该是:

M[i][j] += m1[i][k]*m2[k][j]