C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++プログラムの対角的に優勢な行列


このチュートリアルでは、与えられた行列が対角的に優勢であるかどうかを見つけるのに役立つプログラムを作成します。

対角要素以外の行列の要素の合計が対角行列よりも小さい場合、その行列は対角優勢行列と呼ばれます。例を見てみましょう。

421
352
247

上記の行列は対角的に支配的な行列です。なぜなら

4 > 2 + 1
5 ≥ 3 + 2
7 > 4 + 2

すべての対角要素は、同じ行の非対角要素の合計以上です。

問題を解決するための手順を見てみましょう。

  • 行列の行と列を繰り返します。

    • 非対角要素の合計を求めます。

    • 非対角要素の合計を対角要素と比較します。

    • 非対角要素の合計が対角要素より大きい場合は、「いいえ」と出力します。

  • 「はい」と印刷します。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
#define N 3
bool isDiagonallyDominantMatrix(int matrix[N][N], int n) {
   for (int i = 0; i < n; i++) {
      int sum = 0;
      for (int j = 0; j < n; j++) {
         if (i != j) {
            sum += abs(matrix[i][j]);
         }
      }
      if (abs(matrix[i][i]) < sum) {
         return false;
      }
   }
   return true;
}
int main() {
   // int matrix[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
   int matrix[N][N] = {{4, 2, 1}, {3, 5, 2}, {2, 4, 7}};
   if (isDiagonallyDominantMatrix(matrix, 3)) {
      cout << "Yes" << endl;
   }
   else {
      cout << "No" << endl;
   }
return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

Yes

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. C++で対合行列をチェックするプログラム

    行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列が対合行列であるかどうかを確認する必要があります かどうか。 対合行列 行列は非自発的と呼ばれます 行列がそれ自体と乗算され、その結果が単位行列である場合に限り、行列。行列Iは、その主対角線が1であり、主対角線以外の要素がゼロである場合にのみ、単位行列です。したがって、行列は対合行列であると言えます。 M * M =Iの場合のみ 、ここで M はいくつかの行列であり、私は単位行列です。 以下の例のように- ここで、行列にそれ自体を乗算すると、結果は単

  2. 隣接行列を実装するためのC++プログラム

    グラフの隣接行列は、サイズV x Vの正方行列です。VはグラフGの頂点の数です。この行列では、各辺にV個の頂点がマークされています。グラフにiからjの頂点までのエッジがある場合、i thの隣接行列に 行とjth 列は1(または加重グラフの場合はゼロ以外の値)になります。それ以外の場合、その場所は0を保持します。 隣接行列表現の複雑さ: 隣接行列表現は、計算中にO(V2)のスペースを取ります。グラフに最大数のエッジと最小数のエッジがある場合、どちらの場合も必要なスペースは同じになります。 入力: 出力: 0 1 2 3 4