2013-02-21 4 views
0

안녕하세요 (제 영어 실례), 파이썬에서 행렬 곱셈을하는 것에 큰 의구심이 있습니다. 목록 목록을 만들고 배율 행렬을 곱합니다. 이것은 내가 한 일로 alparecer는 할 수 없습니다. 인덱스로 곱하기 연산 문제를 수행하고, 종이와 연필로 확인하고 작동합니다. 색인을 수용하기에는 좋지 않은 일을하고 있습니까? 아니면 처음부터 행렬을 수용하는 것이 잘못 되었습니까?파이썬에서의 행렬 곱셈

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

+1

왜 numpy를 사용하지 않습니까? –

답변

5

이 나에게 잘못 보인다

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

가 안 :

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