الجواهر للمعلوماتية الجواهر للمعلوماتية
recent

آخر الأخبار

recent
جاري التحميل ...

خوارزمية جداء مصفوفتين

الجواهر للمعلوماتية


جداء مصفوفتين


سنكتشف في هذا المقالة التعليمية كيفية كتابة  خوارزمية وبرنامج يطلب من المستخدم إدخال مصفوفتين ثم حساب جداء هاتين المصفوفتين ، كالمثال المذكور أدناه.

المصفوفة هي جدول من الأعداد الحقيقية تحتوي على صفوف وأعمدة ، كل عدد من هذه الأعداد هو عنصر أو معامل للمصفوفة.
حسب التعريف الرياضي، إذا كانت المصفوفة Tab تحتوي على صفوف m وأعمدة n ، يُقال أنها ذات أبعاد m ×  n   (بهذا الترتيب). 

كل عنصر من عناصر مصفوفة الجداء هو ناتج ضرب أحد صفوف المصفوفة الأولى بأحد أعمدة المصفوفة الثانية.
لكي يتم تحديد حاصل جداء مصفوفتين ، يجب أن يكون عدد أعمدة المصفوفة الأولى مساويًا لعدد صفوف المصفوفة الثانية ، أي Tab1[m,n] و Tab2[n,m] والناتج يكون Tab[n,n].

خوارزمية جداء مصفوفتين


المطلوب منا وضع خوارزمية تمكننا من إيجاد حاصل ضرب مصفوفتين

1- المتغيرات والثوابت أي مدخلات ومخرجات الخوارزمية
  - المتغيرالأول هوTab1 المصفوفة الأولى.  
  - المتغير الثاني هو Tab2 المصفوفة الثانية.
  - المتغيرالثالث نرمزله ب m عدد أعمدة المصفوفة الأولى وعدد صفوف المصفوفة الثانية.
  - المتغير الرابع نرمز له ب n عدد صفوف المصفوفة الأولى وعدد أعمدة المصفوفة    الثانية.
  - المتغير الخامس نرمز له ب Tab تمثل المصفوفة الناتجة من جداء Tab1 و Tab2.
  - المتغير السادس نرمز له ب j يعتبر عددا في البرنامج.
  - المتغير السابع نرمز له ب i يعتبر عددا في البرنامج.
  - المتغير الثامنن نرمز له ب k يعتبر عددا في الخوارزمية

2- العمليات والإجراءات
   - j = 0 ، i = 0 
   - إدخال m وn عدد أعمدة وصفوف المصفوفتين.
   - إدخال عناصر المصفوفتين Tab1 و Tab2
   - نقرأ في المرة الأولى كل عناصر الصف الأول من المصفوفة الأولى ونقوم بضربها  مع عناصر العمود الأول من المصفوفة الثانية ، وهكذا دواليك حتى نتم العملية ،            ونحصل على المصفوفة الجديدة حاصل جداء المصفوفتين Tab1 و Tab2. 

3- مخرجات الخوارزمية
   - الحصول على مصفوفة جديدة Tab[n,n]

   وتكون الخوارزمية على الشكل التالي :


الجواهر للمعلوماتية

برنامج الخوارزمية بلغة Python


لكتابة برنامج Python لجداء مصفوفتين ، هناك عدة طرق ، لكن سنتطرق فقط لطريقتين:

- الطريقة الأولى إستعمال الدالة  ()dot من مكتبة numpy من لغة Python ويكون البرنامج كالتالي  للمثال المذكور أعلاه:

>>> import numpy as np
>>> Tab1 = np.array([[1,2,3],[4,5,6]])
>>> Tab1.shape
(2, 3)
>>> Tab2 = np.array([[1,2],[3,4],[5,6]])
>>> Tab2.shape
(3, 2)
>>> Tab=Tab1.dot(Tab2)
>>>Tab
array([[ 22, 28],
[49, 64]])

الطريقة الثانية : نكتب دالة لجداء مصفوفتين وتكون على الشكل التالي :

def product_matrix(Tab1,Tab2):
global Tab
if Tab1.shape[1] == Tab2.shape[0]:
Tab = np.zeros((Tab1.shape[0],Tab2.shape[1]),dtype = int)
for i in range(rows):
for j in range(cols):
for k in range(len(Tab2)):
Tab[i, j] += Tab1[i, k] * Tab2[k, j]
return Tab
else:
return "Can not multiply Tab1 & Tab2."
يمكنك استعمال هذه الدالة في برنامج رئيسي يقرأ المصفوفتين Tab1 و Tab2 وينادي على الدالة product_matrix لحساب جداء المصفوفتين.


التعليقات


جميع الحقوق محفوظة

الجواهر للمعلوماتية