Tatasusunan atau matriks dua dimensi sangat berguna dalam beberapa aplikasi. Matriks mempunyai baris dan lajur dan menyimpan nombor di dalamnya. Dalam C++, kita juga boleh menggunakan tatasusunan berbilang dimensi untuk menentukan matriks dua dimensi. Dalam artikel ini, kita akan melihat cara mengira norma dan surih matriks tertentu menggunakan C++.
Normal ialah punca kuasa dua hasil tambah semua unsur dalam matriks. Surih ialah jumlah unsur yang terdapat dalam pepenjuru utama. Mari kita lihat algoritma dan perwakilan kod C++.
$begin{bmatrix} 5 & 1 & 8 aksara baris baharu 4 & 3 & 9 aksara baris baharu 2&7&3 tamat{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
Dalam contoh di atas, kami mengambil matriks 3 x 3, di sini kami mendapat jumlah semua elemen dan kemudian mengambil punca kuasa duanya. Mari kita lihat algoritma untuk pemahaman yang lebih baik.
#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 aksara baris baharu 4 & 3 & 9 aksara baris baharu 2&7&3 tamat{bmatrix},$
Sum of all elements in main diagonal: (5 + 3 + 3) = 11 which is the trace of given matrix
Dalam contoh di atas, kami mengambil matriks 3 x 3 dan di sini kami mendapat jumlah semua elemen pada pepenjuru utama. Jumlah ini ialah surih matriks. Mari kita lihat algoritma untuk pemahaman yang lebih baik.
#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
Normal dan jejak adalah kedua-dua operasi matriks. Untuk melaksanakan kedua-dua operasi ini, kita memerlukan matriks segi empat sama (kerana matriks surih persegi diperlukan). Normal hanyalah punca kuasa dua hasil tambah semua unsur yang terdapat dalam matriks, dan surih ialah jumlah unsur yang terdapat pada pepenjuru utama matriks. Matriks ini boleh diwakili menggunakan tatasusunan dua dimensi dalam C++. Di sini kami memberikan dua contoh matriks dengan 5 baris dan 5 lajur (25 elemen secara keseluruhan). Mengakses matriks memerlukan pernyataan gelung dengan operasi pengindeksan. Untuk pengiraan biasa kita perlu mengulangi setiap elemen, jadi dua gelung bersarang diperlukan. Kerumitan program ini ialah O(n2). Untuk pengesanan, kerana kita hanya perlu melihat pepenjuru utama, indeks baris dan indeks lajur akan sama. Jadi hanya satu untuk gelung sudah memadai. Boleh dikira dalam masa O(n).
Atas ialah kandungan terperinci Program C++ untuk mencari vektor dan jejak biasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!