Python程序查找给定矩阵的迹和范数
矩阵定义为按行和列排列的一组数字。具有m行和n列的矩阵称为m X n矩阵,m和n称为其维度。矩阵是一个二维数组,在python中使用列表或NumPy数组创建。
矩阵的迹
矩阵的迹定义为其对角线元素之和(即从左上到右下的元素)。仅对于方阵(即行和列具有相同元素数的矩阵)才能计算矩阵的迹。
假设我们有一个如下所示的3X3矩阵:
[a, b, c] [d, e, f] [g, h, i]
迹将是(a+e+i)的和。让我们取一个4X4矩阵
[1, 2, 3, 4] [6, 4, 2, 0] [5, 1, 6, 8] [9, 3, 6, 0]
此矩阵的最终迹为
sum(1+4+6+0) = 11
下面,我们将讨论查找矩阵迹的示例。
使用for循环
我们将使用for循环迭代所有矩阵元素以计算矩阵所有对角线的和,以找到迹。
示例
通过python的“for循环”迭代所有元素,计算对角线的和。
# Defining the matrix matrix = [[10,2,3], [4,5,2], [2,2,1]] # function for calculate the normal of a matrix def findTrace(matrix): diag_sum = 0 for i in range(len(matrix)): diag_sum += matrix[i][i] return diag_sum print("Trace of Matrix =", findTrace(matrix))
输出
Trace of Matrix = 16
给定矩阵的对角线元素为(10, 5, 1),迹为16。
使用NumPy.trace()方法
此外,我们还可以使用Python Numpy模块中的trace()方法来计算矩阵的迹。numpy.trace()方法返回NumPy数组的对角线之和。
语法
numpy.trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)
示例
在这个例子中,我们应用numpy.trace()方法来计算矩阵的迹。
import numpy as np matrix = np.array([[10,2,3], [4,5,2], [2,2,1]]) # find the trace matrix_trace = np.trace(matrix) print("Trace of Matrix =", matrix_trace)
输出
Trace of Matrix = 16
给定矩阵的对角线元素为(10, 5, 1),迹为16。
查找矩阵的范数
矩阵的范数定义为矩阵所有元素的平方和的平方根。
假设我们有一个包含4个元素的矩阵
[8, 4] [5, 2]
此矩阵的范数为:
√(82 + 42 +52 +22) = 10
使用for循环
使用for循环迭代所有矩阵元素以计算矩阵所有元素的平方和的平方根。
示例
要查找矩阵的范数:首先,我们将导入math模块以利用math.pow()和math.sqrt()属性。
import math matrix = [[1,3,2], [3,6,3], [1,4,2]] #function for calculate the normal of a matrix def findNormal(matrix): sum_of_elements = 0 for i in range(len(matrix)): for j in range(len(matrix)): sum_of_elements += math.pow(matrix[i][j], 2) return math.floor(math.sqrt(sum_of_elements)) print("Normal of Matrix =", findNormal(matrix))
输出
Normal of Matrix = 9
通过使用python for循环,我们迭代了矩阵的每个元素,并使用math.pow()函数计算了平方,然后将平方相加并存储在一个变量中。最后,使用math.sqrt()函数计算平方根。
使用NumPy模块
借助numpy方法(如power()、sqrt()和sum()),我们可以轻松地计算矩阵的范数。
示例
在这个例子中,我们将导入NumPy模块以利用numpy.power()、numpy.sum()和numpy.sqrt()属性。
import numpy as np matrix = np.array([[1,3,2], [3,6,3], [1,4,2]]) # find the normal sumOfsquares = np.power(matrix, 2).sum() matrix_normal = round(np.sqrt(sumOfsquares)) print("Trace of Matrix =", matrix_normal)
输出
Normal of Matrix = 9
通过使用numpy.power()函数,我们计算了给定矩阵中每个元素的平方,然后使用numpy.sum()函数计算了平方和。最后,使用numpy.sqrt()函数计算平方根。为了避免浮点数,我们然后对np.sqrt()值进行了四舍五入。