對稱矩陣是矩陣的特殊情況,其中矩陣和矩陣的轉置都相同。矩陣是一組以矩形形式儲存的整數或數字,相當於二維數組,矩陣的轉置也是將所有行替換為列得到的矩陣。我們將得到一個矩陣,並且必須列印它是否為對稱矩陣。
Mat = [[1, 2, 3], [2, 3, 8], [3, 8, 0]]
Yes, the given matrix is the symmetric matrix.
眾所周知,轉置矩陣是將列替換為行、將行替換為列的矩陣,因此這裡第一行與第一列相同,第二行與列相同,第三行與列相同也是一樣的。
Mat = [[1, 2, 3], [2, 3, 9], [3, 8, 0]]
No, the given matrix is not a symmetric matrix.
在給定的矩陣中,轉置矩陣將會是 -
Trans: [[1, 2, 3], [2, 3, 8], [3, 9, 0]]
我們可以看到第二行和第三行或第二列和第三列不一樣。
注意 - 如我們所見,給定矩陣的轉置可以透過交換行和列來形成,這意味著如果矩陣的維度為N*M,則矩陣的維度為轉置矩陣將為M*N。這意味著要讓矩陣成為對稱矩陣,N 必須等於 M,從而得到方陣。
在這個方法中,我們首先透過建立一個新矩陣並按行列儲存元素來取得轉置矩陣。然後我們將簡單地遍歷兩個矩陣並比較它們。如果它們在任何索引處不匹配,那麼我們將返回 false,否則我們將返回 true。
// function to find the transpose of the given matrix function getTranspose(mat){ // getting the number of rows present in the given matrix. var n = mat.length; // getting the number of columns present in the given matrix. var m = mat.length; // creating a new array to store the transpose matrix // new array will have m rows and n columns var transP = new Array(m) // traversing over the given matrix column-wise for(var i = 0;i < m; i++){ var cur = new Array(n); for(var j = 0; j<n; j++){ cur[j] = mat[j][i]; } transP[i] = cur; } // returing tranpose of the given matrix return transP; } // function to check if the given matrix is symmetric or not function check(mat){ var n = mat.length; var m = mat[0].length; // matrix must be a square matrix if(n != m){ return false; } // getting tranpose of the given matrix var transP = getTranspose(mat); // checking if both matrices are equal for(var i = 0; i<n ;i++){ for(var j = 0; j<n ;j++){ if(mat[i][j] != transP[i][j]){ return false; } } } return true; } // defining the matrix var mat = [[1, 2, 3], [2, 3, 8], [3, 8, 0]] console.log("The given matrix is: ") console.log(mat); if(check(mat)){ console.log("The given matrix is a symmetric matrix") } else{ console.log("The given matrix is not a symmetric matrix") }
上述程式碼的時間複雜度為 O(N*N),其中 N 是給定矩陣的大小。
上述程式碼的空間複雜度為 O(N*N),因為我們使用額外的空間來儲存轉置矩陣元素。
轉置矩陣可以透過交換行和列來得到,也就是每一列等於對應的行。因此,任何索引 (i,j) 處的值將等於給定矩陣中 (j,i) 處的值。
// function to check if the given matrix is symmetric or not function check(mat){ var n = mat.length; var m = mat[0].length; // matrix must be a square matrix if(n != m){ return false; } // checking if mat[i][j] is equal to mat[j][i] or not for(var i = 0; i<n ;i++){ for(var j = 0; j<i ;j++){ if(mat[i][j] != mat[j][i]){ return false; } } } return true; } // defining the matrix var mat = [[1, 2, 3], [2, 3, 8], [3, 9, 0]] console.log("The given matrix is: ") console.log(mat); if(check(mat)){ console.log("The given matrix is a symmetric matrix") } else{ console.log("The given matrix is not a symmetric matrix") }
上述程式碼的時間複雜度為 O(N*N),其中 N 是給定矩陣的大小。
上述程式碼的空間複雜度為 O(1),因為我們沒有使用任何額外的空間。
在上面的教學中,我們實作了一段 JavaScript 程式碼來找出給定的矩陣是否是對稱矩陣。對稱矩陣是矩陣的特殊情況,其中矩陣和矩陣的轉置都相同,且矩陣的轉置可以透過交換行和列來獲得。矩陣必須是方陣才能成為對稱矩陣。我們實作了兩種方法,時間複雜度為 O(N*N),空間複雜度為 O(N*N),空間複雜度為 O(1)。
以上是檢查矩陣是否對稱的 JavaScript 程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!