একটি ম্যাট্রিক্স ডায়াগোনালি ডমিন্যান্ট ম্যাট্রিক্স বলা হয় যদি প্রতিটি ম্যাট্রিক্স রোয়ের জন্য, সেই রোয়ের ডায়াগোনাল এন্ট্রির ম্যাগনিচুড সেই রোয়ের অন্য সব নন-ডায়াগোনাল এন্ট্রির ম্যাগনিচুডের যোগফলের চেয়ে বড় বা সমান হয়।
প্রথমে একটি কনস্ট্যান্ট ইন্ট ভেরিয়েবল N ডিক্লেয়ার করি মান ৩ দিয়ে যা আমাদের ম্যাট্রিক্স ডাইমেনশন রিপ্রেজেন্ট করে।
const int N = 3;
isDDM(int mat[N][N], int n) একটি বুলিয়ান ফাংশন যা আমাদের ম্যাট্রিক্সের কপি এবং ম্যাট্রিক্সের আকার নেয়। ভেতরে আমরা নেস্টেড ফর লুপ দিয়ে ম্যাট্রিক্সের রো এবং কলাম ইটারেট করি। আমরা প্রতিটি রোয়ের জন্য প্রতিটি কলামের যোগফল বের করি এবং সেটি sum ভেরিয়েবলে যোগ করি।
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 থেকে বিয়োগ করি।
sum -= abs(mat[i][i]);
পরবর্তীতে, চেক করি কোনো ডায়াগোনাল এলিমেন্ট sum চেয়ে কম কিনা। যদি কেউ কম হয়, false ফেরত দিয়ে লুপ এবং ফাংশন থেকে এক্সিট করি অন্যথায় লুপ শেষ হলে true ফেরত দিয়ে কোনো এলিমেন্ট sum চেয়ে কম নেই।
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