Maison  >  Article  >  développement back-end  >  Programme C++ pour trouver des vecteurs et des traces normales

Programme C++ pour trouver des vecteurs et des traces normales

WBOY
WBOYavant
2023-09-09 16:41:091037parcourir

Programme C++ pour trouver des vecteurs et des traces normales

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++.

Matrice normale

$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.

Algorithme

  • Lire la matrice M en entrée
  • Considérez M avec n lignes et n colonnes
  • Somme : = 0
  • Pour i de 1 à n, fais
    • Pour j de 1 à n, procédez comme suit
      • somme := somme + M[ i ][ j ]​​i>
    • Fin de la boucle
  • Fin de la boucle
  • res := somme des racines carrées
  • Retour des résultats

Exemple

#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;
}

Sortie

Normal of the first matrix is: 28.0357
Normal of the second matrix is: 37.8418

Trace matricielle

$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.

Algorithme

  • Lire la matrice M en entrée
  • Considérez M avec n lignes et n colonnes
  • Somme : = 0
  • Pour i de 1 à n, fais
    • somme := somme + M[ je ][ je ]​​i>
  • Fin de la boucle
  • Rendre la somme

Exemple

#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;
}

Sortie

Trace of the first matrix is: 50
Trace of the second matrix is: 26

Conclusion

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer