Heim > Backend-Entwicklung > C++ > C++-Programm zum Finden von Normalenvektoren und Spuren

C++-Programm zum Finden von Normalenvektoren und Spuren

WBOY
Freigeben: 2023-09-09 16:41:09
nach vorne
1060 Leute haben es durchsucht

C++-Programm zum Finden von Normalenvektoren und Spuren

Zweidimensionale Arrays oder Matrizen sind in verschiedenen Anwendungen sehr nützlich. Eine Matrix besteht aus Zeilen und Spalten und speichert Zahlen darin. In C++ können wir auch mehrdimensionale Arrays verwenden, um zweidimensionale Matrizen zu definieren. In diesem Artikel erfahren Sie, wie Sie mit C++ die Norm und Spur einer bestimmten Matrix berechnen.

Normal ist die Quadratwurzel der Summe aller Elemente in der Matrix. Die Spur ist die Summe der in der Hauptdiagonalen vorhandenen Elemente. Schauen wir uns den Algorithmus und die C++-Codedarstellung an.

Matrix normal

$begin{bmatrix} 5 & ​​​​1 & 8 Zeilenumbrüche 4 & 3 & 9 Zeilenumbrüche 2&7&3 end{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
Nach dem Login kopieren

Im obigen Beispiel haben wir eine 3 x 3-Matrix genommen, hier erhalten wir die Summe aller Elemente und ziehen dann die Quadratwurzel daraus. Schauen wir uns zum besseren Verständnis den Algorithmus an.

Algorithmus

  • Matrix M als Eingabe lesen
  • Betrachten Sie M mit n Zeilen und n Spalten
  • Summe: = 0
  • Für i von 1 bis n, tun
    • Für j von 1 bis n gehen Sie wie folgt vor
      • sum := sum + M[ i ][ j ]
    • Beende die Schleife
  • Beende die Schleife
  • res := Summe der Quadratwurzeln
  • Ergebnisse zurückgeben

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

Normal of the first matrix is: 28.0357
Normal of the second matrix is: 37.8418
Nach dem Login kopieren

Matrix Trace

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

Sum of all elements in main diagonal: (5 + 3 + 3) = 11 which is
the trace of given matrix
Nach dem Login kopieren

Im obigen Beispiel haben wir eine 3 x 3-Matrix genommen und hier die Summe aller Elemente auf der Hauptdiagonale erhalten. Diese Summe ist die Spur der Matrix. Werfen wir zum besseren Verständnis einen Blick auf den Algorithmus.

Algorithmus

  • Matrix M als Eingabe lesen
  • Betrachten Sie M mit n Zeilen und n Spalten
  • Summe: = 0
  • Für i von 1 bis n, tun
    • sum := sum + M[ i ][ i ]
  • Beende die Schleife
  • Den Betrag zurückgeben

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

Trace of the first matrix is: 50
Trace of the second matrix is: 26
Nach dem Login kopieren

Fazit

Normalen und Spuren sind beides Matrixoperationen. Um diese beiden Operationen auszuführen, benötigen wir eine quadratische Matrix (da eine quadratische Spurmatrix erforderlich ist). Die Normale ist einfach die Quadratwurzel der Summe aller in der Matrix vorhandenen Elemente, und die Spur ist die Summe der auf der Hauptdiagonalen der Matrix vorhandenen Elemente. Diese Matrix kann mithilfe eines zweidimensionalen Arrays in C++ dargestellt werden. Hier geben wir zwei Beispiele für Matrizen mit 5 Zeilen und 5 Spalten (insgesamt 25 Elemente). Der Zugriff auf die Matrix erfordert eine Schleifenanweisung mit Indizierungsoperationen. Für normale Berechnungen müssen wir jedes Element durchlaufen, daher sind zwei verschachtelte Schleifen erforderlich. Die Komplexität dieses Programms beträgt O(n2). Da wir bei der Verfolgung nur die Hauptdiagonale betrachten müssen, sind der Zeilenindex und der Spaltenindex gleich. Es reicht also nur eine for-Schleife. Kann in O(n)-Zeit berechnet werden.

Das obige ist der detaillierte Inhalt vonC++-Programm zum Finden von Normalenvektoren und Spuren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage