اذهب إلى المحتوى
  • 0

ايجاد وطباعة معكوس المصفوفة الثنائية في لغة c++

Abdo Rabah

السؤال

Recommended Posts

  • 0

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

باستطاعتك إيجاد معكوس المصفوفة الثنائية باستخدام الرياضيات الخطية. وبالنسبة للطباعة في لغة 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

عليك تحديد هل تريد المقلوب أم المعكوس، هناك فرق رياضي كبير بينهما، و هما في أغلب الأحيان غير متساويان ( فقط في حالات خاصة يكونان متساويان).

المنقول هو مجرد قلب الأعمدة أسطر و الأسطر أعمدة، أي كما شرح لك المدرب مصطفى.

أما المعكوس فهو إيجاد المصفوفة التي يكون ناتج ضربها بالمصفوفة الحالية مساوٍ للمصفوفة I و التي هي الحيادي بالنسبة لعملية ضرب المصفوفات و تدعى Identity matrix.

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

سأشرح لك الفرق بينهما من ناحية الفكرة حتى تستطيع أن تقرر ما الذي تريده، و أن تفهم الفرق بشكل واضح.

إن كل مصفوفة هي عبارة عن تمثيل لتابع خطي من فضاء شعاعي إلى آخر، و عندما نفكر بذلك يمكننا تحديد المعكوس لتابع ما f على أنه التابع g الذي يحقق f(g(v)) = v و g(f(v)) = v .

بينما المنقول يمثل شيء آخر كلياً في موضوع معقد له علاقة بالفضاءات الثنائية.

و بالتالي كما سبقت و نصحتك هذه المواضيع تحتاج شخص خبير جداً و على دراية بما يفعل في حال أراد نتائج جيدة، لذلك يفضل استعمال مكتبة جاهزة تم كتابتها من قبل خبير في هذه المواضيع، يمكنك أن تستعمل مكتبة ALGLIB مثلاً.

حيث تحوي هذه المكتبة على تابع لإيجاد المعكوس و هو rmatrixinverse، و الذي تقوم بتمرير المصفوفة له فقط و هو يقوم بحساب معكوسها، كما يعيد لك true أو false تمثل فيما إذا كان يمكن عكسها أم لا، فهناك الكثير من المصفوفات غير القابلة للعكس.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...