行列がC++で対称であるかどうかをチェックするプログラム
線形代数では、行列M [] []は、行列の転置が行列自体と等しい場合にのみ、対称行列であると言われます。行列の転置とは、行列を対角線上で反転させることです。これにより、行列の行と列のインデックスが切り替わります。
対称行列の例の下-
$$ \ begin {bmatrix} 1&4&7 \\ 4&5&6 \\ 7&6&9 \\ \ end {bmatrix} \ Rightarrow \ begin {bmatrix} 1&4&7 \\ 4&5 &6 \\ 7&6&9 \\ \ end {bmatrix} $$
上記の行列は、左側の行列を転置した対称行列であり、結果は行列自体と同じです。
例
Input: arr1[][n] = { { 1, 2, 3 }, { 2, 2, 4 }, { 3, 4, 1 } }; Output: its a symmetric matrix Input: arr1[][n] = { { 1, 7, 3 }, { 2, 9, 5 }, { 4, 6, 8 } }; Output: its not a symmetric matrix
アプローチ
次の手順に従うだけです-
- 1。行列を取り、その転置を他の行列に格納します。
- 2。結果の行列が入力行列と同じであることを確認します。
アルゴリズム
Start Step 1 -> define macro as #define n 10 Step 2 -> declare function to find transporse of a matrix void transpose(int arr1[][n], int arr2[][n], int a) Loop For int i = 0 and i < a and i++ Loop For int j = 0 and j < a and j++ Set arr2[i][j] = arr1[j][i] End End Step 3 -> declare function to check symmetric or not bool check(int arr1[][n], int a) declare variable as int arr2[a][n] Call transpose(arr1, arr2, a) Loop For int i = 0 and i < a and i++ Loop For int j = 0 and j < a and j++ IF (arr1[i][j] != arr2[i][j]) return false End End End Return true Step 4 -> In main() Declare variable as int arr1[][n] = { { 1, 2, 3 }, { 2, 2, 4 }, { 3, 4, 1 } } IF (check(arr1, 3)) Print its a symmetric matrix Else Print its not a symmetric matrix Stop>
例
#include <iostream> #define n 10 using namespace std; //find transporse of a matrix void transpose(int arr1[][n], int arr2[][n], int a){ for (int i = 0; i < a; i++) for (int j = 0; j < a; j++) arr2[i][j] = arr1[j][i]; } //check symmetric or not bool check(int arr1[][n], int a){ int arr2[a][n]; transpose(arr1, arr2, a); for (int i = 0; i < a; i++) for (int j = 0; j < a; j++) if (arr1[i][j] != arr2[i][j]) return false; return true; } int main(){ int arr1[][n] = { { 1, 2, 3 }, { 2, 2, 4 }, { 3, 4, 1 } }; if (check(arr1, 3)) cout << "its a symmetric matrix"; else cout << "its not a symmetric matrix"; return 0; }
出力
its a symmetric matrix
-
C++でべき等行列をチェックするプログラム
行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列がべき等行列であるかどうかを確認する必要があります かどうか。 べき等行列 行列「M」はべき等行列と呼ばれます 行列「M」にそれ自体を掛けたものだけが同じ行列「M」を返す場合、つまり M * M=M。 以下の例のように- 上記の行列はそれ自体で乗算され、同じ行列を返すと言えます。したがって、マトリックスはIデポテンツマトリックスです。 。 例 Input: m[3][3] = { {2, -2, -4}, {-1, 3,
-
C++で対角行列とスカラー行列をチェックするプログラム
行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列が対角であるかどうかを確認する必要があります およびスカラー 対角の場合、行列かどうか およびスカラー マトリックスを作成し、結果にyesを出力します。 対角行列 正方行列m[][]は、主対角を除く要素がゼロの場合にのみ対角行列になります。 下の図のように- ここで、赤の要素は主対角線であり、主対角線がゼロであることを除いてゼロ以外の残りの要素であり、対角行列になっています。 。 例 Input: m[3][3] = { {7, 0, 0},