ضرب ماتریس ها چگونه انجام میشود ؟
ضرب ماتریس ها چگونه انجام میشود ؟
همانطور که میدانید دو ماتریس در صورتی میتوانند در هم ضرب شوند که تعداد ستونهـاي اولین ماتریس با تعداد سطرهاي دومین ماتریس برابـر باشـد. درایـههـاي هـر سـطر از مـاتریس اول در درایههاي متناظر در ستون ماتریس دوم ضرب میشوند و مجموع آنها در مکان درایهاي بـا عـدد سـطر ماتریس اول و عدد ستون ماتریس دوم در ماتریس حاصلضرب قرار میگیرد. با این توضیح ما متدي بهنـام __mul __مـینویسـیم کـه عمـل ضـرب دو مـاتریس را انجـام میدهد. قبلاً با نحوة عمل __mul __آشنا شدهاید:
def __mul__(self, other):
product = Matrix(self.dimension[0], other.dimensions[1])
for i in range(self.dimension[0]):
for k in range(other.dimensions[1]):
for j in range(self.dimensions[1]):
product.__matrix[i][k] += (self.__matrix[i][j] * \
other.__matrix[j][k])
return product
در ابتداي متد، ما ماتریسی را میسازیم که از تعداد سطرهاي ماتریس اول و تعداد سـتونهـاي ماتریس دوم تشکیل شده است. حال در سـه حلقـۀ متـوالی اعمـال ضـرب و جمـع درایـههـا را انجـام میدهیم. متغیر حلقۀ اول درایههاي موجود در سطرهاي ماتریس اول را میپیمایـد. متغیـر حلقـۀ دوم، هم ستونهاي ماتریس اول و هم سطرهاي ماتریس دوم و متغیر حلقه سوم هـم درایـههـاي موجـود در ستونهاي ماتریس دوم را میپیماید. در آخرین حلقه یـک بـه یـک درایـههـاي سـطرهاي مـاتریس اول، در درایـههـاي متنـاظر در ستونهاي ماتریس دوم ضـرب شـده و بـه درایـۀ حاصـلضـرب اضـافه مـیشـوند. در پایـان، مـاتریس حاصلضرب برگردانده میشود و میتوانیم آن را در هر متغیر دلخـواهی ذخیـره کنـیم و یـا بـا دسـتور print آن را چاپ کنیم:
>> m1 = Matrix(3, 1)
>>> m1.inputItems()
Element[0][0] = 1
Element[1][0] = 2
Element[2][0] = 3
>>> m2 = Matrix(1*2)
>>> m2.inputItems()
Element[0][0] = 4
Element[0][1] = 5
>>> print m1 * m2
4 5
8 10
12 15
تمــرین 21-3 :بــا اطلاعــاتی کــه در مــورد عمــل متــدهاي __add__ ، __sub __و __rmul __دارید، هر یک از آنها را به کلاس Matrix اضافه کنید. آیا میتوانیـد متـدهاي دیگري براي انجام کارهاي مختلف با ماتریسها طراحی کنید؟
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید