Maison > développement back-end > C++ > le corps du texte

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

WBOY
Libérer: 2023-09-09 16:41:09
avant
998 Les gens l'ont consulté

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
Copier après la connexion

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 ]
    • 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;
}
Copier après la connexion

Sortie

Normal of the first matrix is: 28.0357
Normal of the second matrix is: 37.8418
Copier après la connexion

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
Copier après la connexion

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 ]
  • 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;
}
Copier après la connexion

Sortie

Trace of the first matrix is: 50
Trace of the second matrix is: 26
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!