تلعب المصفوفات دورًا حيويًا في العديد من المجالات المتنوعة ، بما في ذلك رسومات الكمبيوتر والتشفير والاتصالات اللاسلكية. المصفوفة هي مصفوفة مستطيلة من الأرقام مرتبة في صفوف وأعمدة ، تُستخدم لتمثيل كائن رياضي أو خصائصه.
إحدى العمليات التي قد تحتاج إلى إجرائها هي ضرب المصفوفة. يجد هذا استخدامات في العديد من المجالات مثل حسابات الديناميكا الهوائية ومعالجة الإشارات ومعالجة الصور والتحليل الزلزالي. ولكن بالضبط كيف تضرب المصفوفات؟
كيفية ضرب مصفوفتين
أنت تمثل ترتيب المصفوفة كمنتج لعدد الصفوف (م) وعدد الأعمدة (ن). لضرب مصفوفتين ، يجب أن يكون عدد أعمدة المصفوفة الأولى مساويًا لصفوف المصفوفة الثانية.
إذا كان لديك مصفوفتان ، المصفوفة A بالترتيب m × n و B بالترتيب n × p ، فسيكون ترتيب مصفوفة المنتج m × p. على سبيل المثال ، افترض أن لديك مصفوفة أ تحتوي على صفين (م) وثلاثة أعمدة (ن) ومصفوفة ب تحتوي على ثلاثة صفوف (ن) وعمودين (ع). تتكون المصفوفة الناتجة من صفين وعمودين:
تقوم بضرب مصفوفتين باستخدام حاصل الضرب النقطي. للحصول على قيمة العنصر الأول من المصفوفة الناتجة ، اضرب وأضف عناصر الصف الأول من المصفوفة الأولى والصف الأول من عنصر المصفوفة الثاني حسب العنصر كما يلي:
(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58
وبالمثل ، بالنسبة للعنصر الثاني ، اضرب الصف الأول من المصفوفة الأولى والعمود الثاني من المصفوفة الثانية على النحو التالي:
(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64
بالنسبة للعنصر الثالث ، اضرب الصف الثاني من المصفوفة الأولى والعمود الأول من المصفوفة الثانية على النحو التالي:
(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139
بالنسبة للعنصر الرابع ، اضرب الصف الثاني من المصفوفة الأولى والعمود الثاني من المصفوفة الثانية على النحو التالي:
(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154
وبالتالي ، فإن المصفوفة الناتجة هي:
يمكنك استكشاف وبناء برامج مختلفة لعمليات مختلفة على المصفوفات مثل:
- جمع وطرح مصفوفتين
- إيجاد مدور مصفوفة
- التحقق مما إذا كانت مصفوفتان متطابقتين
خوارزمية لمضاعفة مصفوفتين
اتبع هذه الخوارزمية لبناء برنامج لضرب أي مصفوفتين:
- ابدأ البرنامج.
- أدخل صفوف وأعمدة المصفوفة الأولى.
- أدخل صفوف وأعمدة المصفوفة الثانية.
- إذا كانت المصفوفات غير متوافقة مع الضرب ، اطبع خطأ واخرج.
- حدد مصفوفة وأدخل الأرقام في المصفوفة الأولى.
- حدد مصفوفة أخرى وأدخل الرقم في المصفوفة الثانية.
- حدد مصفوفة لتخزين نتيجة ضرب المصفوفتين.
- اضبط حلقة لتكرار صف المصفوفة الأولى.
- قم بإعداد حلقة داخلية للتكرار فوق عمود المصفوفة الثانية.
- قم بتعيين حلقة داخلية أخرى لتكرارها فوق عمود المصفوفة الأولى.
- اضرب وأضف العناصر باستخدام الصيغة mul [i] [j] + = m1 [i] [k] * m2 [k] [j] وتخزين نتيجة الضرب في المصفوفة الناتجة.
- اعرض المصفوفة الناتجة.
- اخرج من البرنامج.
كيفية إجراء عملية ضرب المصفوفة باستخدام C
الكود المصدري الكامل لضرب المصفوفة باستخدام C موجود في هذا مستودع جيثب وهو مجاني للاستخدام.
قم باستيراد مكتبة stdio لإدخال الأرقام وعرض المخرجات وفقًا لذلك. نعلن رئيسي وظيفة واطلب من المستخدم إدخال عدد الأعمدة وعدد الصفوف لكلا المصفوفتين باستخدام مطبعة() وظيفة.
استخدم ال scanf () وظيفة لتلقي المدخلات. ٪د هو محدد التنسيق العشري الذي يضمن أن يقرأ البرنامج المدخلات كرقم.
#يشمل
#يشملintرئيسي()
{
int r1 ، r2 ، c1 ، c2 ؛
printf("أدخل عدد الصفوف ل المصفوفة الأولى: \ n ")؛
مسح("٪ d" ، & r1) ؛
printf("أدخل عدد الأعمدة ل المصفوفة الأولى: \ n ")؛
مسح("٪ d" ، & c1) ؛
printf("أدخل عدد الصفوف ل المصفوفة الثانية: \ n ")؛
مسح("٪ d" ، & r2) ؛
printf("أدخل عدد الأعمدة ل المصفوفة الثانية: \ n ")؛
مسح("٪ d" ، & c2) ؛
تحقق من إمكانية ضرب المصفوفة. إذا كان عدد أعمدة المصفوفة الأولى لا يساوي عدد صفوف المصفوفة الثانية ، فقم بإظهار الخطأ والخروج.
إذا (c1! = r2) {
printf ("لا يمكن ضرب المصفوفات معًا");
مخرج(-1);
}
إذا كان كل شيء جيدًا ، فحدد مصفوفتين متعددتي الأبعاد ، م 1 و م 2، بالحجم الذي قدمه المستخدم. اطلب من المستخدم إدخال عناصر كلتا المصفوفتين واحدة تلو الأخرى. استخدم ملف ل حلقة لأخذ المدخلات لكل من صف وعمود المصفوفة. تتكرر حلقة for الخارجية على صفوف المصفوفة والحلقة الداخلية فوق عمود المصفوفة.
intم 1[r1][ج 1], م 2[r2][ج 2];
printf ("أدخل عناصر المصفوفة الأولى \ n");ل (int أنا = 0; أنا ل (int ي = 0; ي scanf ("٪د", &m1 [i] [j]) ؛
}
}
printf ("أدخل عناصر المصفوفة الثانية \ n");
ل (int أنا = 0; أنا
}
}
تحديد مصفوفة ثالثة ، مول، من أجل r1 * c2 لتخزين النتيجة. استخدم ملف ل حلقة لأداء الضرب. تتكرر الحلقة الخارجية for على الصفوف ، وتتكرر الحلقة الداخلية التالية فوق الأعمدة ، وتقوم الحلقة الداخلية بعملية الضرب. استخدم الصيغة mul [i] [j] + = m1 [i] [k] * m2 [k] [j] لضرب عناصر المصفوفة.
تستخدم الصيغة عامل الاختزال += لتضيف مول [i] [j] للتعبير المحسوب وتخزينه. تذكر تهيئة النتيجة إلى الصفر قبل الإضافة إليها.
intمول[r1][ج 2];ل (int أنا = 0; أنا ل (int ي = 0; ي مول [i] [j] = 0 ؛
ل (int ك = 0; ك
}
}
}
اعرض المصفوفة المضاعفة باستخدام حلقة for المتداخلة التي تتكرر على صفوف وأعمدة المصفوفات الناتجة. استخدم حرف السطر الجديد (\ n) لعرض كل من الصفوف في سطر منفصل. العودة 0 للخروج من الوظيفة الرئيسية والبرنامج.
printf("المصفوفة المضاعفة هي: \ n")؛ ل (int أنا = 0; أنا ل (int ي = 0; ي printf("٪ d \ t"، mul [i] [j]) ؛
}
printf("\ن")؛
}
يعود0;
}
مخرجات برنامج ضرب المصفوفة
يجب أن ترى شيئًا مثل الناتج التالي عند تشغيل برنامج ضرب المصفوفة:
إذا أدخلت إدخالاً غير صالح ، يفشل ضرب المصفوفة وسترى شيئًا كالتالي:
المصفوفات لها استخدامات كثيرة
تستخدم المجالات المختلفة المصفوفات مثل العلوم والتجارة والاقتصاد والجيولوجيا والروبوتات والرسوم المتحركة. ستستخدم المصفوفات بشكل أساسي في الرياضيات لحل المعادلات الخطية وتمثيل التحولات مثل الدوران أو الترجمة. يمكن للمصفوفات حساب مقدار الانعكاس والانكسار وكذلك حل معادلات شبكة التيار المتردد في الدوائر الكهربائية.
بصرف النظر عن التطبيقات التعليمية ، يمكنك استخدام المصفوفات لتحليل بيانات المسح وبيانات التصويت وحساب قوائم العناصر ومجموعات البيانات الأخرى.