Code: Select all
class Matrix(object):
"""Represents and manipulates matrixes"""
def __init__(self, m=1, n=1):
"""initializer"""
self.m = m
self.n = n
self.mx = [[0]*n for row in range(m)]
self.solution = []
def __str__(self):
"""string formatter for print use"""
strmx = '\n'.join([' '.join([str(el) for el in row]) for row in self.mx])
return strmx + '\n'
def set(self, x, y, el):
"""sets the element in the matrix on the desired position"""
self.mx[x][y] = el
def get(self, x, y):
"""gets the element from the desired position in the matrix"""
return self.mx[x][y]
def is_square(self):
"""True if the matrix is a square matrix, False if not"""
if self.m == self.n:
return True
else:
return False
def scalar_mult(self, scalar):
"""Multiplies every element in the matrix with scalar"""
for rownr,row in enumerate(self.mx):
for el,val in enumerate(row):
self.mx[rownr][el] = val*scalar
def transpose(self):
"""Transposes the matrix"""
self.m, self.n = self.n, self.m
self.mx = [list(el) for el in zip(*self.mx)]
def sum(self, other_matrix):
"""only with a square matrix"""
for rownr,row in enumerate(self.mx):
for el,val in enumerate(row):
self.mx[rownr][el] += other_matrix.mx[rownr][el]
def mult(self, other_matrix):
self.solution = [[0 for row in range(other_matrix.m)] for column in range(self.n)]
for srow in range(self.m):
for ocolumn in range(other_matrix.n):
for orow in range(other_matrix.m):
self.solution[srow][ocolumn] += self.mx[srow][orow] * other_matrix.mx[orow][ocolumn]
def unity(self):
"""only if it is a square matrix"""
self.mx = [[0]*self.n for row in range(self.m)]
for row in range(self.m):
self.mx[row][row] = 1
Traceback (most recent call last):
File "testmatrix.py", line 50, in <module>
o = k.mult(l)
File "/home/axelle/matrix.py", line 56, in mult
self.solution[srow][ocolumn] += self.mx[srow][orow] * other_matrix.mx[orow][ocolumn]
IndexError: list index out of range
Axelle