向量和矩阵范数

一、向量的范数

向量和矩阵范数_第1张图片

二、矩阵的范数

向量和矩阵范数_第2张图片

python求解范数的函数的原型是:

numpy.linalg.norm(x,ord=None,axis=None,keepdims=False)

参数:

(1):x表示的是数组,如果说axis不存在的话,那么x必须是一个一维或者2维的数组。

(2):ord表示的是一个非零的int数字,或者是inf,-inf,fro,nuc等等。表示的是范数的类型

(3):axis表示的行还是列求范数

(4):keepdims表示的是保持矩阵的二维特性,False就是不保存

代码:

import numpy as np
A=np.array([1,2,3,4,5,6])
print("--------我们这里讨论的是向量--------")
print(A)
print("一范数:",np.linalg.norm(A,ord=1),"等于所有元素的绝对值求和",np.sum(np.abs(A)))
print("二范数:",np.linalg.norm(A,ord=2),"等于所有元素的平方和开方",np.sqrt(np.sum(A**2)))
print("无穷范数:",np.linalg.norm(A,ord=np.inf),"等于元素的绝对值的最大值",np.max(np.abs(A)))

print("--------我们这里讨论的是矩阵-------")
M=np.mat([[1,2,3],[4,5,6],[7,8,9]])
print(M)
print("一范数:",np.linalg.norm(M,ord=1,keepdims=False),"等于列方向的绝对值之和的最大值",
      np.max(np.sum(np.abs(M),axis=0)))
print("无穷范数:",np.linalg.norm(M,ord=np.inf),"等价于行方向的绝对值之和的最大值",
      np.max(np.sum(np.abs(M),axis=1)))
print("二范数:",np.linalg.norm(M,ord=2),"等于M的共轭转置矩阵和M的乘积的最大特征值开平方根",
      np.sqrt(np.max(np.linalg.eig(M.H*M)[0])))

#注意这里的np.linalg.eig表示的是返回方阵的特征值和特征值向量,先返回特征值,所以[0]表示的是得到特征值的向量

结果:

--------我们这里讨论的是向量--------
[1 2 3 4 5 6]
一范数: 21.0 等于所有元素的绝对值求和 21
二范数: 9.539392014169456 等于所有元素的平方和开方 9.539392014169456
无穷范数: 6.0 等于元素的绝对值的最大值 6
--------我们这里讨论的是矩阵-------
[[1 2 3]
 [4 5 6]
 [7 8 9]]
一范数: 18.0 等于列方向的绝对值之和的最大值 18
无穷范数: 24.0 等价于行方向的绝对值之和的最大值 24
二范数: 16.84810335261421 等于M的共轭转置矩阵和M的乘积的最大特征值开平方根 16.848103352614213

Process finished with exit code 0

 

 

你可能感兴趣的:(数学问题,python)