Heim  >  Artikel  >  Backend-Entwicklung  >  C++-Programm zum Ermitteln der Spur und Normalen einer bestimmten Matrix

C++-Programm zum Ermitteln der Spur und Normalen einer bestimmten Matrix

WBOY
WBOYnach vorne
2023-08-30 10:37:051157Durchsuche

C++-Programm zum Ermitteln der Spur und Normalen einer bestimmten Matrix

Einige Anwendungen können von der Verwendung zweidimensionaler Arrays oder Matrizen stark profitieren. Zahlen werden in den Zeilen und Spalten der Matrix gespeichert. Mithilfe mehrdimensionaler Arrays können wir 2D-Matrizen können auch in C++ definiert werden. In diesem Artikel erfahren Sie, wie Sie C++ verwenden Bestimmen Sie die Normale und die Spur der gegebenen Matrix.

Die Quadratwurzel der Gesamtzahl der Elemente in einer Matrix nennt man Normal. Die Spur besteht aus allen Komponenten, die die Hauptdiagonale bilden. lassen Sie uns Sehen Sie sich die Darstellung des Algorithmus im C++-Code an.

Matrix Trace

$begin{bmatrix} 8 & 5 & 3 Zeilenumbrüche 6 & 7& 1 Zeilenumbruch 2 & 4 & 9 Zeilenumbrüche end{bmatrix},$

Die Summe aller Elemente auf der Hauptdiagonale: (8 + 7 + 9) = 24, was die Spur der gegebenen Matrix ist

Im vorherigen Beispiel wurde eine 3 x 3-Matrix verwendet und das Ergebnis ist die Summe der Matrizen Die Anzahl der Elemente in der Hauptdiagonale. Die Spur der Matrix findet sich in der Summe wieder. lassen Sie uns Es hilft zum Verständnis, wenn wir uns den Algorithmus ansehen.

Algorithmus

  • Matrix M als Eingabe lesen
  • Angenommen, M hat n Zeilen und n Spalten
  • Summe: = 0
  • Für i von 1 bis n, tun
    • sum := sum + M[ i ][ i ]​​i>
  • Ende
  • Den Betrag zurückgeben

Beispiel

#include <iostream>
#include <cmath>
#define N 7
using namespace std;
float solve( int M[ N ][ N ] ){
   int sum = 0;
   
   // read elements through major diagonal, where row index and column index are same, both are i
   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, 78, 25},
      {48, 2, 98, 6, 63, 52, 3},
      {85, 12, 10, 6, 9, 47, 21},
      {6, 12, 18, 32, 5, 10, 32},
      {8, 45, 74, 69, 1, 14, 56},
      {7, 69, 17, 25, 89, 23, 47},
      {98, 23, 15, 20, 63, 21, 56},
   };
   cout << "The Trace of the first matrix is: " << solve( mat1 ) << endl;
   int mat2[ N ][ N ] = {
      {6, 8, 35, 21, 87, 8, 26},
      {99, 2, 36, 326, 25, 24, 56},
      {15, 215, 3, 157, 8, 41, 23},
      {96, 115, 17, 5, 3, 10, 18},
      {56, 4, 78, 5, 10, 22, 58},
      {85, 41, 29, 65, 47, 36, 78},
      {12, 23, 87, 45, 69, 96, 12}
   };
   cout << "The Trace of the second matrix is: " << solve( mat2 ) << endl;
}

Ausgabe

The Trace of the first matrix is: 129
The Trace of the second matrix is: 74

Matrix normal

$begin{bmatrix} 8 & 5 & 3 Zeilenumbrüche 6 & 7& 1 Zeilenumbruch 2 & 4 & 9 Zeilenumbrüche end{bmatrix},$

Summe aller Elemente: (8 + 5 + 3 + 6 + 7 + 1 + 2 + 4 + 9) = 45

Normal: (Quadratwurzel der Summe aller Elemente) = √45 = 6,708

Im vorherigen Beispiel wurde eine 3 x 3-Matrix verwendet. Wir berechnen zunächst die Summe aller Einträge bevor man seine Quadratwurzel findet. Schauen wir uns den Algorithmus an, um das Verständnis zu erleichtern.

Algorithmus

  • Matrix M als Eingabe lesen
  • Angenommen, M hat n Zeilen und n Spalten
  • Die Summe wird auf 0 initialisiert
  • Für i von 1 bis n, tun
    • Für j im Bereich von 1 bis n gilt Folgendes
      • sum := sum + M[ i ][ j ]​​i>
    • Ende
  • Ende
  • res := Quadratwurzel der Summe
  • Ergebnisse zurückgeben

Beispiel

#include <iostream>
#include <cmath>
#define N 7
using namespace std;
float solve( int M[ N ][ N ] ){
   int sum = 0;
   
   // go through each element. Using outer loop, access ith row, using inner loop access column. For cell (i, j) read the element and add it to the sum
   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, 78, 25},
      {48, 2, 98, 6, 63, 52, 3},
      {85, 12, 10, 6, 9, 47, 21},
      {6, 12, 18, 32, 5, 10, 32},
      {8, 45, 74, 69, 1, 14, 56},
      {7, 69, 17, 25, 89, 23, 47},
      {98, 23, 15, 20, 63, 21, 56},
   };
   cout << "The Normal of the first matrix is: " << solve( mat1 ) <<
       endl;
   int mat2[ N ][ N ] = {
      {6, 8, 35, 21, 87, 8, 26},
      {99, 2, 36, 326, 25, 24, 56},
      {15, 215, 3, 157, 8, 41, 23},
      {96, 115, 17, 5, 3, 10, 18},
      {56, 4, 78, 5, 10, 22, 58},
      {85, 41, 29, 65, 47, 36, 78},
      {12, 23, 87, 45, 69, 96, 12}
   };
   cout << "The Normal of the second matrix is: " << solve( mat2 ) <<
       endl;
}

Ausgabe

The Normal of the first matrix is: 41.1947
The Normal of the second matrix is: 49.4267

Fazit

Normal- und Trace-Operationen gehören zu Matrizen. Diese beiden Prozesse erfordern Quadratische Matrix, das ist es, was wir brauchen (weil wir das Spurquadrat brauchen). Die Summe der Spuren ist Die Elemente sind in der Hauptdiagonale der Matrix enthalten, während die Normale gerade ist Die Quadratwurzel der Gesamtzahl der in der Matrix enthaltenen Elemente. In C++ kann eine Matrix Anzeige mit einem zweidimensionalen Array. Hier haben wir zwei Matrizen mit 5 Zeilen und 5 Spalten ausgewählt Beispiel (insgesamt 25 Elemente). Der Zugriff auf die Matrix muss über eine Schleifenanweisung erfolgen und Indexmanipulation. Zur Ausführung des Typs sind zwei verschachtelte Schleifen erforderlich Bei der Berechnung müssen wir jedes Element durchlaufen. Die Komplexität dieses Programms beträgt O(n2). Da für die Nachführung nur die Hauptdiagonale erforderlich ist, gelten die Zeilen- und Spaltenindizes Dasselbe. Daher ist nur eine for-Schleife erforderlich. Bestimmt in O(n)-Zeit.

Das obige ist der detaillierte Inhalt vonC++-Programm zum Ermitteln der Spur und Normalen einer bestimmten Matrix. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen