一. 矩阵和向量的各种范数
定义
矩阵的不同范数的定义如下:
1. 1范数(L1范数):矩阵的每一列的绝对值之和中的最大值。
2. 2范数(L2范数):矩阵的特征值中的最大值的平方根。
3. 无穷范数:矩阵的每一行的绝对值之和中的最大值。
4. F范数(Frobenius范数):矩阵的每个元素的平方和的平方根。
对于向量的不同范数的定义如下:
1. 0范数:向量中非零元素的个数。
2. 1范数(L1范数):向量的每个元素的绝对值之和。
3. 2范数(L2范数):向量的每个元素的平方和的平方根。
4. 无穷范数:向量中绝对值最大的元素。
例题
1.求矩阵的[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]的1范数、2范数、无穷范数、F范数。求向量x=(-1, 2, 4)^T的0范数,1范数,2范数和无穷范数。 首先给出具体的计算公式,然后给出实现代码和基于代码的计算结果
计算公式: 略
实现代码:文章来源地址https://www.toymoban.com/news/detail-755381.html
import numpy as np
# 定义矩阵
matrix = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
# 1范数
norm_1 = np.linalg.norm(matrix, ord=1)
# 2范数
norm_2 = np.linalg.norm(matrix, ord=2)
# 无穷范数
norm_inf = np.linalg.norm(matrix, ord=np.inf)
# F范数
norm_F = np.linalg.norm(matrix, ord='fro')
# 输出
print(f"矩阵的1范数:{norm_1}")
print(f"矩阵的2范数:{norm_2}")
print(f"矩阵的无穷范数:{norm_inf}")
print(f"矩阵的F范数:{norm_F}")
# 定义向量
vector = np.array([-1, 2, 4])
# 0范数
norm_0 = np.count_nonzero(vector)
# 1范数
norm_1 = np.linalg.norm(vector, ord=1)
# 2范数
norm_2 = np.linalg.norm(vector, ord=2)
# 无穷范数
norm_inf = np.linalg.norm(vector, ord=np.inf)
# 输出
print(f"向量的0范数:{norm_0}")
print(f"向量的1范数:{norm_1}")
print(f"向量的2范数:{norm_2}")
print(f"向量的无穷范数:{norm_inf}")
2.求向量x=(4,2,4,3)^T的0范数,1范数,2范数和无穷范数。自动生成一个3行列的矩阵,求矩阵的1-范数、2-范数、无穷-范数、F-范数。首先给出具体的计算公式,然后给出实现代码和基于代码的计算结果。
计算公式:略
实现代码:
import numpy as np
# 定义向量x
x = np.array([4, 2, 4, 3])
# 计算不同范数
norm_0 = np.count_nonzero(x)
norm_1 = np.sum(np.abs(x))
norm_2 = np.linalg.norm(x)
norm_inf = np.max(np.abs(x))
print(f"向量x的0范数:{norm_0}")
print(f"向量x的1范数:{norm_1}")
print(f"向量x的2范数:{norm_2}")
print(f"向量x的无穷范数:{norm_inf}")
# 生成一个3x3的随机矩阵M
M = np.random.rand(3, 3)
# 计算不同范数
norm_1 = np.max(np.sum(np.abs(M), axis=0))
norm_2 = np.sqrt(np.max(np.linalg.eigvals(M.T @ M)))
norm_inf = np.max(np.sum(np.abs(M), axis=1))
norm_F = np.linalg.norm(M, ord='fro')
print(f"矩阵M的1范数:{norm_1}")
print(f"矩阵M的2范数:{norm_2}")
print(f"矩阵M的无穷范数:{norm_inf}")
print(f"矩阵M的F范数:{norm_F}")
3.随机初始化一个10维向量,求向量的0范数,1范数,2范数和无穷范数。求矩阵[[5, 1, 0, -2], [2, 0, 3, 1], [4, 1, 2, 5], [0, -3, 1, 2]]的1-范数、2-范数、无穷范数、F-范数。首先给出具体的计算公式,然后给出实现代码和基于代码的计算结果。
计算公式:略文章来源:https://www.toymoban.com/news/detail-755381.html
实现代码:
random_vector = np.random.rand(10)
# 计算不同范数
norm_0 = np.count_nonzero(random_vector)
norm_1 = np.sum(np.abs(random_vector))
norm_2 = np.linalg.norm(random_vector)
norm_inf = np.max(np.abs(random_vector))
print(f"随机向量的0范数:{norm_0}")
print(f"随机向量的1范数:{norm_1}")
print(f"随机向量的2范数:{norm_2}")
print(f"随机向量的无穷范数:{norm_inf}")
# 定义矩阵
matrix = np.array([[5, 1, 0, -1], [2, 0, 3, 1], [4, 1, 2, 5], [0, -3, 1, 2]])
# 计算不同范数
norm_1 = np.max(np.sum(np.abs(matrix), axis=0))
norm_2 = np.sqrt(np.max(np.linalg.eigvals(matrix.T @ matrix)))
norm_F = np.linalg.norm(matrix, ord='fro')
print(f"矩阵的1范数:{norm_1}")
print(f"矩阵的2范数:{norm_2}")
print(f"矩阵的F范数:{norm_F}")
到了这里,关于矩阵和向量的各种范数(定义 + 例题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!