向量范数与矩阵范数

原创 2018年04月15日 15:52:46

1.范数(norm)的意义

要更好的理解范数,就要从函数、几何与矩阵的角度去理解。 
我们都知道,函数与几何图形往往是有对应的关系,这个很好想象,特别是在三维以下的空间内,函数是几何图像的数学概括,而几何图像是函数的高度形象化,比如一个函数对应几何空间上若干点组成的图形。 
但当函数与几何超出三维空间时,就难以获得较好的想象,于是就有了映射的概念,映射表达的就是一个集合通过某种关系转为另外一个集合。通常数学书是先说映射,然后再讨论函数,这是因为函数是映射的一个特例。 
为了更好的在数学上表达这种映射关系,(这里特指线性关系)于是就引进了矩阵。这里的矩阵就是表征上述空间映射的线性关系。而通过向量来表示上述映射中所说的这个集合,而我们通常所说的基,就是这个集合的最一般关系。于是,我们可以这样理解,一个集合(向量),通过一种映射关系(矩阵),得到另外一个几何(另外一个向量)。 
那么向量的范数,就是表示这个原有集合的大小。 
而矩阵的范数,就是表示这个变化过程的大小的一个度量。

总结起来一句话,范数(norm),是具有“长度”概念的函数。

2.范数满足的三个特性

1.非负性: ||x||0||x||≥0,且||x||=0||x||=0当且仅当x=0x=0时成立 。 
2.齐次性: ||kx||=|k|||x||||k⋅x||=|k|⋅||x|| 
3.三角不等式: ||x+y||||x||+||y||||x+y||≤||x||+||y||

3.向量的范数

1-范数,计算方式为向量所有元素的绝对值之和。 

||x||1=in|xi|||x||1=∑in|xi|

2-范数,计算方式跟欧式距离的方式一致。 
||x||2=(i=1n|xi|2)12||x||2=(∑i=1n|xi|2)12

-范数,所有向量元素中的最大值。 
||x||=maxi|xi|||x||∞=maxi|xi|

−∞-范数,所有向量元素中的最小值。 
||x||=mini|xi|||x||−∞=mini|xi|

pp-范数,所有向量元素绝对值的p次方和的1/p次幂。 
||x||p=(i=1n|xi|p)1p||x||p=(∑i=1n|xi|p)1p

4.矩阵的范数

首先假设矩阵的大小为mnm∗n,即m行n列。

1-范数,又名列和范数。顾名思义,即矩阵列向量中绝对值之和的最大值。 

||A||1=maxji=1m|aij|||A||1=maxj∑i=1m|aij|

2-范数,又名谱范数,计算方法为ATAATA矩阵的最大特征值的开平方。 
||A||2=λ1||A||2=λ1

其中λ1λ1ATAATA的最大特征值。

-范数,又名行和范数。顾名思义,即矩阵行向量中绝对值之和的最大值。 

||A||=maxji=1n|aij|||A||∞=maxj∑i=1n|aij|

F-范数,Frobenius范数,计算方式为矩阵元素的绝对值的平方和再开方。 

||A||F=(i=1mj=1n|aij|2)12||A||F=(∑i=1m∑j=1n|aij|2)12

5.在python里计算范数

numpy包里的linalg模块,是专门处理基本线性代数问题的模块。借助该模块中的norm()函数可以轻松计算向量与矩阵的范数。

先看看norm()方法的原型:

def norm(x, ord=None, axis=None, keepdims=False):
    Matrix or vector norm.

    This function is able to return one of eight different matrix norms,
    or one of an infinite number of vector norms (described below), depending
    on the value of the ``ord`` parameter.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

再看看更为详细的计算说明:

    The following norms can be calculated:

    =====  ============================  ==========================
    ord    norm for matrices             norm for vectors
    =====  ============================  ==========================
    None   Frobenius norm                2-norm
    'fro'  Frobenius norm                --
    'nuc'  nuclear norm                  --
    inf    max(sum(abs(x), axis=1))      max(abs(x))
    -inf   min(sum(abs(x), axis=1))      min(abs(x))
    0      --                            sum(x != 0)
    1      max(sum(abs(x), axis=0))      as below
    -1     min(sum(abs(x), axis=0))      as below
    2      2-norm (largest sing. value)  as below
    -2     smallest singular value       as below
    other  --                            sum(abs(x)**ord)**(1./ord)
    =====  ============================  ==========================
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

看到上面这个表以后,同学们应该特别清楚了吧。

6.上代码

看了上面的说明以后,必须亲自动手写写代码,验证一下。前面全是理论,最后自然要实践一把。talk is cheap, show me the code!

#!/usr/bin/env python
#coding:utf-8

'''
Created on 2016年7月17日

@author: lei.wang
'''

import numpy as np
import numpy.linalg as LA

def compute_norm():
    mat = np.matrix([[1,2],[3,4]])
    inv_mat = np.linalg.inv(mat)
    print inv_mat

def vector_norm():
    a = np.arange(9) - 4
    print LA.norm(a,np.inf) #无穷范数
    print LA.norm(a,-np.inf)
    print LA.norm(a,1) #1范数
    print LA.norm(a,2) #2范数

def matrix_norm():
    a = np.arange(9) - 4
    b = a.reshape(3,3)
    b_t = np.transpose(b)
    b_new = np.dot(b_t,b) #b_new矩阵为b^t * b
    x = np.linalg.eigvals(b_new) #求b_new矩阵的特征值
    print x
    print LA.norm(b,1) #列范数
    print LA.norm(b,2) #谱范数,为x里最大值开平方
    print LA.norm(b,np.inf) #无穷范数,行范数
    print LA.norm(b,"fro") #F范数

vector_norm()
print 
matrix_norm()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

让代码run起来:

4.0
0.0
20.0
7.74596669241

[  5.40000000e+01   6.00000000e+00   5.99792822e-16]
7.0
7.34846922835
9.0
7.74596669241
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

注释已经写得很详细,相信大家都已经看明白。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sjyttkl/article/details/79949949

向量和矩阵的范数讲义

  • 2009年11月04日 13:50
  • 606KB
  • 下载

向量和矩阵的各种范数比较(1范数、2范数、无穷范数等等)

向量的1范数,2范数,无穷范数,矩阵的1范数,2范数,无穷范数,L0范数,L1范数,L2范数(F范数),L21范数,核范数。。。。、。...
  • Michael__Corleone
  • Michael__Corleone
  • 2017-07-16 23:32:59
  • 16033

向量与矩阵范数

范数(norm),是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,范函是一个函数,其为矢量空间内的所有矢量赋予非零的正长度或大小。半范数反而可以为非零的矢量赋予零长度。举一个简单的例子...
  • u013007900
  • u013007900
  • 2016-02-01 09:57:12
  • 3675

范数和向量范数

向量范数 定义1. 设 ,满足 1. 正定性:║x║≥0,║x║=0 iff x=0 2. 齐次性:║cx║=│c│║x║, 3. 三角不等式:║x+y║≤║x║+║y║ 则称Cn中定义了向量范数,║...
  • Daemon_neu
  • Daemon_neu
  • 2007-03-28 09:19:00
  • 5892

向量范数与矩阵范数的理解

要更好的理解范数,就要从函数、几何与矩阵的角度去理解,我尽量讲的通俗一些。我们都知道,函数与几何图形往往是有对应的关系,这个很好想象,特别是在三维以下的空间内,函数是几何图像的数学概括,而几何图像是函...
  • jack_20
  • jack_20
  • 2017-06-07 09:44:36
  • 753

线性代数常用基本知识 (含向量和矩阵范数<Matrix or vector norm>)

1. 行列式 1.1 二阶行列式 1.2 三阶行列式
  • MyArrow
  • MyArrow
  • 2016-04-19 11:07:56
  • 10757

向量的范数以及矩阵的范数

1:向量的范数是这么定义的: 也就是说只要满足这个定义的函数,所求出来的值都是可以成为这个向量的范数,那么常见的这个函数有以下几种: 2:同样矩阵的范数的定义也是如此,定义如下: ...
  • silence1214
  • silence1214
  • 2012-10-19 15:38:06
  • 2246

向量范数的等价性

向量范数的等价 对于任意两个有限维线性空间 V" role="presentation">VVV 上的范数 &#x2016;&#x22C5;&#x2016;&#x03B1;,&#x2016;&#x2...
  • phoenix198425
  • phoenix198425
  • 2018-02-05 16:53:27
  • 113

矩阵论笔记(五)——向量范数与矩阵范数

范数是距离在向量和矩阵上的推广,在研究收敛性、判断矩阵非奇异等方面有广泛应用。本节包括以下内容: (1)向量范数; (2)矩阵范数; (3)从属范数; (4)谱半径; (5)矩阵的非奇异条件。...
  • withchris
  • withchris
  • 2017-03-16 11:14:57
  • 826

范数理解(0范数,1范数,2范数)

刚刚结束,若有错误请多多指教。转载自http://www.zhihu.com/question/20473040/answer/102907063 可以从函数、几何与矩阵的角度去理解范数。 我们...
  • SusanZhang1231
  • SusanZhang1231
  • 2016-08-05 10:54:35
  • 15046
收藏助手
不良信息举报
您举报文章:向量范数与矩阵范数
举报原因:
原因补充:

(最多只允许输入30个字)