Heim >Backend-Entwicklung >C++ >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.
$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
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.
#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
$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
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.
#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
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!