ホームページ >バックエンド開発 >C++ >行列が非対称かどうかをチェックするCプログラム?

行列が非対称かどうかをチェックするCプログラム?

WBOY
WBOY転載
2023-08-28 14:45:04681ブラウズ

行列が非対称かどうかをチェックするCプログラム?

すべての i と j について、正方行列 A の要素が aij=−aji を満たす場合、正方行列 A は非対称行列と呼ばれます。言い換えれば、行列 A の転置が行列 A の負の値に等しい場合、つまり (AT=-A) の場合、行列 A は非対称行列と呼ばれます。

非対称行列の主対角要素はすべて 0 であることに注意してください。

行列の例を見てみましょう

A= |0 -5 4|
   |5 0 -1|
   |-4 1 0|

すべての i と j について、aij=−aji であるため、これは歪対称行列です。たとえば、a12 = -5、a21 = 5、つまり a12 = −a21 となります。同様に、この条件は i と j の他のすべての値にも当てはまります。

行列 A の転置が行列 A の負の数、つまり AT=−A に等しいことも検証できます。

A<sup>T</sup>= |0 5 -4|
    |-5 0 1|
    |4 -1 0|
and
A= |0 -5 4|
   |5 0 -1|
   |-4 1 0|

AT=−A であることが明確にわかります。これにより、A は歪対称行列になります。

Input:
Enter the number of rows and columns: 2 2
Enter the matrix elements: 10 20 20 10
Output:
The matrix is symmetric.
10 20
20 10

説明

行列は、転置行列と等しい場合、対称行列です。

それ以外の場合、転置が負に等しい場合、行列は非対称になります。それ以外の場合は、対称でも反対称でもありません。結果はそれに応じて印刷されます。

行列の対称性をチェックするプロセスは次のとおりです。

  • ユーザーは行列の行数と列数を入力する必要があります。

  • 入力行列の要素が必要で、それらを 'A' に格納します。変数「x」と「y」を 0 に初期化します。

  • 行列が転置と等しくない場合は、一時変数 'x' に値 1 を割り当てます。

  • それ以外の場合、行列の負の数がその転置に等しい場合は、値 1 を一時変数 'y' に割り当てます。

  • x が 0 に等しい場合、行列は対称です。それ以外の場合、y が 1 に等しい場合、行列は非対称になります。

  • 上記の条件がいずれも満たされない場合、行列は対称でも非対称でもありません。

  • 次に、結果を出力します。

#include<iostream>
using namespace std;
int main () {
   int A[10][10], i, j, m, n, x = 0, y = 0;
   cout << "Enter the number of rows and columns : ";
   cin >> m >> n;
   cout << "Enter the matrix elements : ";
   for (i = 0; i < m; i++)
      for (j = 0; j < n; j++)
   cin >> A[i][j];
   for (i = 0; i < m; i++) {
      for( j = 0; j < n; j++) {
         if (A[i][j] != A[j][i])
            x = 1;
         else if (A[i][j] == -A[j][i])
            y = 1;
      }
   }
   if (x == 0)
      cout << "The matrix is symmetric.</p><p> ";
   else if (y == 1)
      cout << "The matrix is skew symmetric.</p><p> ";
   else
      cout << "It is neither symmetric nor skew-symmetric.</p><p> ";
   for (i = 0; i < m; i++) {
      for (j = 0; j < n; j++)
         cout << A[i][j] << " ";
      cout << "</p><p> ";
   }
   return 0;
}

以上が行列が非対称かどうかをチェックするCプログラム?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。