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

行列が交代行列であるかどうかを確認するCプログラム?


正方行列Aは、すべてのiとjに対してaij =-ajiの場合、スキュー対称であると言われます。言い換えると、行列Aの転置が行列Aの負の値に等しい場合、つまり(A T )、行列Aはスキュー対称であると言えます。 =−A)。

交代行列の主対角要素はすべてゼロであることに注意してください。

マトリックスの例を見てみましょう

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

すべてのiとjに対してaij=-ajiであるため、これはスキュー対称行列です。たとえば、a12=-5およびa21=5は、a12=-a21を意味します。同様に、この条件はiとjの他のすべての値にも当てはまります。

また、行列Aの転置が行列Aの負の値、つまりA T に等しいことを確認できます。 =−A。

AT= |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が割り当てられます。

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

  • 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.\n ";
   else if (y == 1)
      cout << "The matrix is skew symmetric.\n ";
   else
      cout << "It is neither symmetric nor skew-symmetric.\n ";
   for (i = 0; i < m; i++) {
      for (j = 0; j < n; j++)
         cout << A[i][j] << " ";
      cout << "\n ";
   }
   return 0;
}

  1. 与えられたツリーがPythonで対称ツリーであるかどうかをチェックするプログラム

    二分木が1つあるとします。ツリーが対称ツリーであるかどうかを確認する必要があります。鏡像を撮ったときに同じである場合、木は対称であると言われます。これらの2つのツリーから、最初のツリーは対称ですが、2番目のツリーは対称ではありません。 これを解決するために、次の手順に従います。 次の手順を再帰的に呼び出します。関数はsolve(root、root)になります node1とnode2が空の場合、trueを返します node1またはnode2のいずれかが空の場合、falseを返します node1.val =node2.valおよびsolve(node1.lef

  2. 与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム

    無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります