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

対称行列とスキュー対称行列の合計としての正方行列?


対称行列 −転置が行列自体と等しい行列。それからそれは対称行列と呼ばれます 。

スキュー対称行列 −転置が行列の負数に等しい行列。この場合、それはスキュー対称行列と呼ばれます。

対称行列とスキュー対称行列の合計は正方行列です。これらの行列を合計として見つけるために、この式があります。

Aを正方行列とします。次に、

A =(½)*(A + A`)+(½)*(A-A`)、

A`は行列の転置です。

(½)(A + A`)は対称行列です。

(½)(A-A`)はスキュー対称行列です。

#include <bits/stdc++.h>
using namespace std;
#define N 3
void printMatrix(float mat[N][N]) {
   for (int i = 0; i < N; i++) {
      for (int j = 0; j < N; j++)
         cout << mat[i][j] << " ";
         cout << endl;
   }
}
int main() {
   float mat[N][N] = { { 2, -2, -4 },
   { -1, 3, 4 },
   { 1, -2, -3 } };
   float tr[N][N];
   for (int i = 0; i < N; i++)
   for (int j = 0; j < N; j++)
   tr[i][j] = mat[j][i];
   float symm[N][N], skewsymm[N][N];
   for (int i = 0; i < N; i++) {
      for (int j = 0; j < N; j++) {
         symm[i][j] = (mat[i][j] + tr[i][j]) / 2;
         skewsymm[i][j] = (mat[i][j] - tr[i][j]) / 2;
      }
   }
   cout << "Symmetric matrix-" << endl;
   printMatrix(symm);
   cout << "Skew Symmetric matrix-" << endl;
   printMatrix(skewsymm);
   return 0;
}

出力

Symmetric matrix -
2 -1.5 -1.5
-1.5 3 1
-1.5 1 -3
Skew Symmetric matrix -
0 -0.5 -2.5
0.5 0 3
2.5 -3 0

  1. Cの奇数正方行列の中央の行と列の積

    行と列が等しく、長さが奇数であるmat [row] [column]の正方形の行列が与えられた場合、行と列の数は奇数でなければなりません。つまり、で割り切れません。 2、タスクは、そのマトリックスの中央の行と中央の列の積を見つけることです。 下の図のように- 制約 行列は正方行列でなければなりません。 列と行の長さは奇数である必要があります。 入力 mat[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} 出力 Product of middle row = 120 Product of middle column = 80 説明

  2. コーナー要素とその合計をCプログラムの2次元行列に出力します。

    サイズが2X2の配列を考えると、配列に格納されているすべてのコーナー要素の合計を出力することが課題になります。 行「r」と列「c」が0から行と列を開始する行列mat[r][c]を想定すると、そのコーナー要素は次のようになります。 mat [0] [0]、mat [0] [c-1]、mat [r-1] [0]、mat[r-1][c-1]。ここでのタスクは、これらのコーナー要素を取得し、それらのコーナー要素を合計することです。つまり、mat [0] [0] + mat [0] [c-1] + mat [r-1] [0] + mat [r-1] [c-1]、結果を画面に印刷します。 例 Input