কম্পিউটার

C++ এ তির্যকভাবে প্রভাবশালী ম্যাট্রিক্স?


একটি ম্যাট্রিক্সকে তির্যকভাবে প্রভাবশালী ম্যাট্রিক্স বলা হয় যদি প্রতিটি ম্যাট্রিক্স সারির জন্য, সারির তির্যক এন্ট্রি ম্যাগনিটিউড সেই সারির অন্য প্রতিটি অ-তির্যক এন্ট্রির পরিমাণের যোগফলের থেকে বড় বা সমান হয়।

আসুন প্রথমে 3 মান সহ একটি ধ্রুবক int চলক N সংজ্ঞায়িত করি যা আমাদের ম্যাট্রিক্সের মাত্রাগুলিকে উপস্থাপন করে৷

const int N = 3;

isDDM(int mat[N][N], int n) হল একটি বুলিয়ান ফাংশন যা আমাদের ম্যাট্রিক্সের একটি কপি এবং আমাদের ম্যাট্রিক্সের আকার নেয়। ভিতরে আমরা নেস্টেড ফর লুপ ব্যবহার করে আমাদের ম্যাট্রিক্সের সারি এবং কলামগুলি পুনরাবৃত্তি করি। তারপরে আমরা প্রতিটি কলামের জন্য প্রতিটি সারির যোগফল খুঁজে বের করি এবং এটিকে আমাদের যোগ পরিবর্তনশীলে যোগ করি।

bool isDDM(int mat[N][N], int n){
for (int i = 0; i < n; i++){
   int sum = 0;
   for (int j = 0; j < n; j++)
      sum += abs(mat[i][j]);

এরপরে, আমরা বর্তমান যোগফল থেকে তির্যক উপাদানের যোগফল সরিয়ে ফেলি।

sum -= abs(mat[i][i]);

এর পরে, আমরা পরীক্ষা করি যে কোন তির্যক উপাদান যোগফলের চেয়ে কম কি না। যদি তাদের কোন একটি যোগফলের থেকে কম হয় তাহলে আমরা মিথ্যা ফেরত দিই এবং আমাদের লুপ এবং ফাংশন থেকে প্রস্থান করি অন্যথায় লুপ শেষ হওয়ার পরে আমরা সত্যে ফিরে আসি কারণ উপাদানগুলির কোনটি যোগফলের চেয়ে কম নয়।

bool isDDM(int mat[N][N], int n){
for (int i = 0; i < n; i++){
   int sum = 0;
   for (int j = 0; j < n; j++)
      sum += abs(mat[i][j]);
      sum -= abs(mat[i][i]);
   if (abs(mat[i][i]) < sum)
      return false;
   }
   return true;
}

অবশেষে, মান রিটার্নের উপর ভিত্তি করে আমরা প্রদর্শন করি যে এটি একটি তির্যকভাবে প্রভাবশালী ম্যাট্রিক্স হোক বা না হোক আমাদের প্রধান ফাংশনে৷

if(isDDM(mat,matSize)){
   cout << "yes,its a diagonally dominant matrix";
} else {
   cout << "NO, its not a diagonally dominant matrix";
}

উদাহরণ

একটি ম্যাট্রিক্স তির্যকভাবে প্রভাবশালী কি না তা পরীক্ষা করার জন্য আমরা নিম্নলিখিত বাস্তবায়ন দেখি৷

#include <iostream>
const int N = 3;
using namespace std;
bool isDDM(int mat[N][N], int n){
   for (int i = 0; i < n; i++){
      int sum = 0;
      for (int j = 0; j < n; j++)
         sum += abs(mat[i][j]);
         sum -= abs(mat[i][i]);
         if (abs(mat[i][i]) < sum)
            return false;
   }
   return true;
}
int main(){
   int matSize = 3;
   int mat[N][N] = {
      { 3, -2, 1 },
      { 1, -3, 2 },
      { -1, 2, 4 }
   };
   if(isDDM(mat,matSize)){
      cout << "yes,its a diagonally dominant matrix";
   } else {
      cout << "NO, its not a diagonally dominant matrix";
   }
   return 0;
}

আউটপুট

উপরের কোডটি নিম্নলিখিত আউটপুট −

তৈরি করবে
yes,its a diagonally dominant matrix

  1. C++ এ স্পাইরাল ম্যাট্রিক্স III

  2. C++ ব্যবহার করে ম্যাট্রিক্সে সর্বোচ্চ যোগফল সহ কলাম খুঁজুন।

  3. একটি ম্যাট্রিক্স C++ এ ইনভার্টেবল কিনা তা পরীক্ষা করুন

  4. C++ এ একটি সমষ্টি অ্যারে ধাঁধা?