Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เมทริกซ์ที่โดดเด่นในแนวทแยงใน C ++?


กล่าวกันว่าเมทริกซ์เป็นเมทริกซ์ที่โดดเด่นในแนวทแยง ถ้าสำหรับทุกแถวเมทริกซ์ ขนาดของรายการในแนวทแยงของแถวนั้นมากกว่าหรือเท่ากับผลรวมของขนาดของรายการที่ไม่ใช่แนวทแยงทุกรายการในแถวนั้น

ก่อนอื่นให้เรากำหนดตัวแปร int คงที่ N ด้วยค่า 3 ซึ่งแสดงถึงมิติเมทริกซ์ของเรา

const int N = 3;

isDDM(int mat[N][N], int n) เป็นฟังก์ชันบูลีนที่คัดลอกเมทริกซ์ของเราและขนาดของเมทริกซ์ของเรา ข้างในเราวนซ้ำแถวและคอลัมน์ของเมทริกซ์ของเราโดยใช้ nested for loop จากนั้นเราจะหาผลรวมของแต่ละแถวสำหรับแต่ละคอลัมน์และเพิ่มลงในตัวแปรผลรวมของเรา

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