2013-02-21 47 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]