Les tableaux ou matrices bidimensionnels sont très utiles dans plusieurs applications. Une matrice comporte des lignes et des colonnes et y stocke des nombres. En C++, nous pouvons également utiliser des tableaux multidimensionnels pour définir des matrices bidimensionnelles. Dans cet article, nous verrons comment calculer la norme et la trace d'une matrice donnée en utilisant C++.
Normal est la racine carrée de la somme de tous les éléments de la matrice. La trace est la somme des éléments présents dans la diagonale principale. Regardons l'algorithme et la représentation du code C++.
$commencer{bmatrix} 5 & 1 & 8 caractères de nouvelle ligne 4, 3 et 9 caractères de nouvelle ligne 2&7&3 fin{bmatrix},$
Sum of all elements: (5 + 1 + 8 + 4 + 3 + 9 + 2 + 7 + 3) = 42 Normal: (Square root of the sum of all elements) = √42 = 6.48
Dans l'exemple ci-dessus, nous avons pris une matrice 3 x 3, ici nous obtenons la somme de tous les éléments puis en prenons la racine carrée. Voyons l'algorithme pour une meilleure compréhension.
#include <iostream> #include <cmath> #define N 5 using namespace std; float solve( int M[ N ][ N ] ){ int sum = 0; for ( int i = 0; i < N; i++ ) { for ( int j = 0; j < N; j++ ) { sum = sum + M[ i ][ j ]; } } return sqrt( sum ); } int main(){ int mat1[ N ][ N ] = { {5, 8, 74, 21, 69}, {48, 2, 98, 6, 63}, {85, 12, 10, 6, 9}, {6, 12, 18, 32, 5}, {8, 45, 74, 69, 1}, }; cout << "Normal of the first matrix is: " << solve( mat1 ) << endl; int mat2[ N ][ N ] = { {6, 8, 35, 21, 87}, {99, 2, 36, 326, 25}, {15, 215, 3, 157, 8}, {96, 115, 17, 5, 3}, {56, 4, 78, 5, 10}, }; cout << "Normal of the second matrix is: " << solve( mat2 ) << endl; }
Normal of the first matrix is: 28.0357 Normal of the second matrix is: 37.8418
$commencer{bmatrix} 5 & 1 & 8 caractères de nouvelle ligne 4, 3 et 9 caractères de nouvelle ligne 2&7&3 fin{bmatrix},$
Sum of all elements in main diagonal: (5 + 3 + 3) = 11 which is the trace of given matrix
Dans l'exemple ci-dessus, nous avons pris une matrice 3 x 3 et nous avons ici la somme de tous les éléments de la diagonale principale. Cette somme est la trace de la matrice. Jetons un coup d'œil à l'algorithme pour une meilleure compréhension.
#include <iostream> #include <cmath> #define N 5 using namespace std; float solve( int M[ N ][ N ] ){ int sum = 0; for ( int i = 0; i < N; i++ ) { sum = sum + M[ i ][ i ]; } return sum; } int main(){ int mat1[ N ][ N ] = { {5, 8, 74, 21, 69}, {48, 2, 98, 6, 63}, {85, 12, 10, 6, 9}, {6, 12, 18, 32, 5}, {8, 45, 74, 69, 1}, }; cout << "Trace of the first matrix is: " << solve( mat1 ) << endl; int mat2[ N ][ N ] = { {6, 8, 35, 21, 87}, {99, 2, 36, 326, 25}, {15, 215, 3, 157, 8}, {96, 115, 17, 5, 3}, {56, 4, 78, 5, 10}, }; cout << "Trace of the second matrix is: " << solve( mat2 ) << endl; }
Trace of the first matrix is: 50 Trace of the second matrix is: 26
Les normales et les traces sont toutes deux des opérations matricielles. Afin d'effectuer ces deux opérations, nous avons besoin d'une matrice carrée (car une matrice de traces carrée est nécessaire). La normale est simplement la racine carrée de la somme de tous les éléments présents dans la matrice, et la trace est la somme des éléments présents sur la diagonale principale de la matrice. Cette matrice peut être représentée à l'aide d'un tableau bidimensionnel en C++. Nous donnons ici deux exemples de matrices à 5 lignes et 5 colonnes (25 éléments au total). L'accès à la matrice nécessite une instruction de boucle avec des opérations d'indexation. Pour les calculs normaux, nous devons parcourir chaque élément, donc deux boucles imbriquées sont nécessaires. La complexité de ce programme est O(n2). Pour le traçage, puisqu'il suffit de regarder la diagonale principale, l'index de ligne et l'index de colonne seront les mêmes. Donc une seule boucle for suffit. Peut être calculé en temps O(n).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!