使用 Python 計算矩陣對角線之和
在本文中,我們將學習一個 Python 程式,以有效地計算矩陣對角線的和。
使用的方法
以下是完成此任務的各種方法 -
使用巢狀 For 迴圈
僅使用單個迴圈
在矩陣中,我們有兩個對角線 -
主對角線
副對角線
示例
讓我們以一個 3x3 矩陣為例,如下所示 -
A00 A01 A02 A10 A11 A12 A20 A21 A22
主對角線條件 - 行列條件為行 = 列。在 3x3 矩陣中,主對角線由A00、A11 和 A22元素構成。
副對角線條件 - 行列條件為行 = 行數 – 列 -1。在 3x3 矩陣中,主對角線由A02、A11 和 A22元素構成。
方法 1:使用巢狀 For 迴圈
演算法(步驟)
以下是執行所需任務的演算法/步驟。-
建立一個函式sumOfDiagonals(),透過接受輸入矩陣和行數作為引數來列印矩陣對角線的和。
初始化一個變數為 0,以儲存主對角線之和。
初始化另一個變數為 0,以儲存副對角線之和。
使用for 迴圈遍歷矩陣的行。
使用另一個巢狀 for 迴圈,遍歷當前行的所有列。
使用if 條件語句檢查行號是否等於列號(主對角線條件),如果為真,則將矩陣元素值新增到主對角線之和。
同樣地,使用if 條件語句檢查行號和列號的和是否等於行數(副對角線條件),如果為真,則將矩陣元素值新增到副對角線之和。
列印輸入矩陣主對角線元素的最終和。
列印輸入矩陣副對角線元素的最終和。
建立一個變數來儲存輸入矩陣。
透過傳遞輸入矩陣和行數(維度)作為引數,呼叫上面定義的sumOfDiagonals()函式,以列印對角線的和。
示例
以下程式使用巢狀 for 迴圈返回輸入矩陣的對角線之和 -
# creating a function to print the sum of diagonals
# of a matrix by accepting input matrix, rows as arguments
def sumOfDiagonals(inputMatrix, rows):
# Initializing with 0 to store the principal diagonal sum
principal_diag = 0
# Initializing with 0 to store the secondary diagonal sum
secondary_diag = 0
# Traversing through the rows of a matrix
for p in range(0, rows):
# Traversing through the columns of the current row
for q in range(0, rows):
# Principal diagonal condition
if (p == q):
principal_diag += inputMatrix[p][q]
# Secondary diagonal condition(row -1 because index starts from 0)
if ((p + q) == (rows - 1)):
secondary_diag += inputMatrix[p][q]
# Printing the sum of principal diagonal elements
print("Sum of principal diagonal elements:", principal_diag)
# Printing the sum of secondary diagonal elements
print("Sum of secondary diagonal elements:", secondary_diag)
# input matrix(3x3 matrix)
inputMatrix = [[5, 1, 3],
[9, 6, 8],
[4, 2, 7]]
rows = 3
print("Given Matrix is:")
# traversing through the rows of a matrix
for p in range(rows):
# Traversing through the columns of a current row
for q in range(rows):
# printing the corresponding element at the current row and column of the matrix
print(inputMatrix[p][q], end=" ")
# Printing a new line
print()
# calling sumOfDiagonals() function by passing input matrix
# and no of rows(dimensions) to it
sumOfDiagonals(inputMatrix, rows)
輸出
執行上述程式後,將生成以下輸出 -
Given Matrix is: 5 1 3 9 6 8 4 2 7 Sum of principal diagonal elements: 18 Sum of secondary diagonal elements: 13
時間複雜度 - O(N*N),因為我們使用了巢狀迴圈遍歷 N*N 次。
輔助空間 - O(1)。因為我們沒有使用任何額外的空間。
方法 2:僅使用單個迴圈
示例
以下程式僅使用一個 for 迴圈(單個迴圈)返回輸入矩陣的對角線之和 -
# Creating a function to print the sum of diagonals
# of a matrix by accepting input matrix, rows as arguments
def sumOfDiagonals(inputMatrix, rows):
# Initializing with 0 to store the principal diagonal sum
principal_diag = 0
# Initializing with 0 to store the secondary diagonal sum
secondary_diag = 0
# Traversing the rows of a matrix
for p in range(0, rows):
# Adding the principal Diagonal element of the current row
principal_diag += inputMatrix[p][p]
# Adding the secondary Diagonal element of the current row
secondary_diag += inputMatrix[p][rows - p - 1]
# printing the sum of principal diagonal elements
print("Sum of principal diagonal elements:", principal_diag)
# printing the sum of secondary diagonal elements
print("Sum of secondary diagonal elements:", secondary_diag)
# input matrix(3x3 matrix)
inputMatrix = [[5, 1, 3],
[9, 6, 8],
[4, 2, 7]]
rows = 3
print("The Given Matrix is:")
# traversing through the rows of a matrix
for p in range(rows):
# Traversing through the columns of a current row
for q in range(rows):
# printing the corresponding element at the current row and column of the matrix
print(inputMatrix[p][q], end=" ")
# Printing a new line
print()
# calling sumOfDiagonals() function by passing input matrix
# and no of rows(dimensions) to it
sumOfDiagonals(inputMatrix, rows)
輸出
執行上述程式後,將生成以下輸出 -
Given Matrix is: 5 1 3 9 6 8 4 2 7 Sum of principal diagonal elements: 18 Sum of secondary diagonal elements: 13
時間複雜度 - O(N)。因為我們使用了迴圈遍歷 N 次。
輔助空間 - O(1)。因為我們沒有使用任何額外的空間。
結論
在本文中,我們學習了矩陣對角線以及計算矩陣對角線(主對角線和副對角線)之和的兩種不同方法。我們學習了一種有效的計算方法,該方法只需要遍歷一次矩陣(O(N) 時間複雜度)。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP