Abdo Rabah نشر 24 مارس 2023 أرسل تقرير نشر 24 مارس 2023 (معدل) ايجاد وطباعة معكوس المصفوفة الثنائية في لغة c++ تم التعديل في 24 مارس 2023 بواسطة Mustafa Suleiman تعديل عنوان السؤال 2 اقتباس
0 Mustafa Suleiman نشر 24 مارس 2023 أرسل تقرير نشر 24 مارس 2023 إذا كان السؤال خاص بالإختبارات فلا يتم الإجابة عليها، يمكن إرشادك فقط لطريقة الحل. باستطاعتك إيجاد معكوس المصفوفة الثنائية باستخدام الرياضيات الخطية. وبالنسبة للطباعة في لغة C++، يمكن استخدام حلقتين for متداخلتين لطباعة العناصر العمودية والصفية من المصفوفة المعكوسة. بشكل عام يمكن اتباع الخطوات التالية: تعريف متغيرين row و col لتحديد عدد صفوف وأعمدة المصفوفة. تعريف المصفوفة matrix بحجم row × col باستخدام الأقواس المربعة [][]. على سبيل المثال، int matrix[row][col] يعني أن المصفوفة matrix هي ذات حجم row × col وتتكون من عناصر من نوع int. يتم تعبئة المصفوفة matrix باستخدام حلقة for مدمجة تحتوي على حلقتي for. وتستخدم الحلقة الخارجية لتحديد صفوف المصفوفة والحلقة الداخلية لتحديد عناصر كل صف. على سبيل المثال، لو أن row = 2 و col = 3، فسيتم تعبئة المصفوفة بالشكل التالي: 1 2 3 4 5 6 عرض المصفوفة الأصلية باستخدام حلقة for مدمجة. وتستخدم الحلقة الخارجية لتحديد صفوف المصفوفة والحلقة الداخلية لتحديد عناصر كل صف. يتم استخدام الدالة cout لطباعة كل عنصر في المصفوفة. إنشاء مصفوفة جديدة invertedMatrix بحجم col × row باستخدام الأقواس المربعة [][]. تعبئة المصفوفة العكسية invertedMatrix باستخدام حلقة for مدمجة تحتوي على حلقتي for. حيث تستخدم الحلقة الخارجية لتحديد أعمدة المصفوفة العكسية والحلقة الداخلية لتحديد عناصر كل عمود. يتم استخدام مؤشرات i و j لتحديد موقع كل عنصر في المصفوفة المعكوسة. على سبيل المثال، لو أن row = 2 و col = 3، فسيتم تعبئة المصفوفة العكسية بالشكل التالي: 1 4 2 5 3 6 بعد الانتهاء من حساب المصفوفة المعكوسة، يمكن عرضها على الشاشة باستخدام حلقة for لطباعة كل عنصر في المصفوفة المعكوسة. يمكن استخدام نفس الفهرس i و j المستخدمين في الحلقة الخارجية التي تم استخدامها لحساب المصفوفة المعكوسة. اقتباس
0 Kais Hasan نشر 25 مارس 2023 أرسل تقرير نشر 25 مارس 2023 عليك تحديد هل تريد المقلوب أم المعكوس، هناك فرق رياضي كبير بينهما، و هما في أغلب الأحيان غير متساويان ( فقط في حالات خاصة يكونان متساويان). المنقول هو مجرد قلب الأعمدة أسطر و الأسطر أعمدة، أي كما شرح لك المدرب مصطفى. أما المعكوس فهو إيجاد المصفوفة التي يكون ناتج ضربها بالمصفوفة الحالية مساوٍ للمصفوفة I و التي هي الحيادي بالنسبة لعملية ضرب المصفوفات و تدعى Identity matrix. عملية إيجاد المعكوس عملية معقدة و تعقيدها الحسابي كبير و لا ينصح بكتابتها بنفسك و ذلك ﻷن هذه العملية تحتاج شخص خبير في العمليات الرياضية ضمن الحاسب لما يحدث من أخطاء دقة. سأشرح لك الفرق بينهما من ناحية الفكرة حتى تستطيع أن تقرر ما الذي تريده، و أن تفهم الفرق بشكل واضح. إن كل مصفوفة هي عبارة عن تمثيل لتابع خطي من فضاء شعاعي إلى آخر، و عندما نفكر بذلك يمكننا تحديد المعكوس لتابع ما f على أنه التابع g الذي يحقق f(g(v)) = v و g(f(v)) = v . بينما المنقول يمثل شيء آخر كلياً في موضوع معقد له علاقة بالفضاءات الثنائية. و بالتالي كما سبقت و نصحتك هذه المواضيع تحتاج شخص خبير جداً و على دراية بما يفعل في حال أراد نتائج جيدة، لذلك يفضل استعمال مكتبة جاهزة تم كتابتها من قبل خبير في هذه المواضيع، يمكنك أن تستعمل مكتبة ALGLIB مثلاً. حيث تحوي هذه المكتبة على تابع لإيجاد المعكوس و هو rmatrixinverse، و الذي تقوم بتمرير المصفوفة له فقط و هو يقوم بحساب معكوسها، كما يعيد لك true أو false تمثل فيما إذا كان يمكن عكسها أم لا، فهناك الكثير من المصفوفات غير القابلة للعكس. اقتباس
السؤال
Abdo Rabah
ايجاد وطباعة معكوس المصفوفة الثنائية في لغة c++
تم التعديل في بواسطة Mustafa Suleimanتعديل عنوان السؤال
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.