一. 矩阵和向量的各种范数
定义
矩阵的不同范数的定义如下:
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范数和无穷范数。 首先给出具体的计算公式,然后给出实现代码和基于代码的计算结果
计算公式: 略
实现代码:
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-范数。首先给出具体的计算公式,然后给出实现代码和基于代码的计算结果。
计算公式:略
实现代码:
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}")

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/51501.html