二維陣列或矩陣在多個應用中非常有用。矩陣有行和列,並在其中儲存數字。在C 中,我們也可以使用多維數組來定義二維矩陣。在本文中,我們將看到如何使用C 計算給定矩陣的範數和跡。
法線是矩陣中所有元素總和的平方根。跡是主對角線中存在的元素的總和。讓我們看看演算法和 C 程式碼表示。
$\begin{bmatrix} 5 & 1& 8\換行符 4 & 3& 9\換行符 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
在上面的範例中,我們取了一個 3 x 3 矩陣,這裡我們得到所有元素的和,然後對其進行平方根。讓我們看看該演算法,以便更好地理解。
#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\換行符 4 & 3& 9\換行符 2&7&3\ \end{bmatrix},$
Sum of all elements in main diagonal: (5 + 3 + 3) = 11 which is the trace of given matrix
在上面的例子中,我們取了一個3 x 3的矩陣,在這裡我們得到了主對角線上所有元素的和。這個和就是矩陣的跡。讓我們來看看演算法,以便更好地理解。
#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
法線和跡線都是矩陣運算。為了執行這兩個操作,我們需要一個方陣(因為需要跡方陣)。法線只是矩陣中存在的所有元素總和的平方根,跡是矩陣主對角線上存在的元素總和。此矩陣可以使用 C 中的二維數組來表示。這裡我們舉了兩個 5 行 5 列矩陣(總共 25 個元素)的例子。存取矩陣需要帶有索引操作的循環語句。對於正常的計算,我們需要遍歷每個元素,因此需要兩個巢狀循環。這個程式的複雜度是O(n2)。對於跟踪,由於我們只需要查看主對角線,因此行索引和列索引將相同。所以只需要一個for迴圈就夠了。可以在O(n)時間內計算出來。
以上是C++程式查找法向量和跡的詳細內容。更多資訊請關注PHP中文網其他相關文章!