(转)常见向量范数和矩阵范数及其MATLAB实现

原文链接

1、向量范数

1-范数:,即向量元素绝对值之和,matlab调用函数norm(x, 1) 。

2-范数:,Euclid范数(欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方,matlab调用函数norm(x, 2)。

∞-范数:,即所有向量元素绝对值中的最大值,matlab调用函数norm(x, inf)。

-∞-范数:,即所有向量元素绝对值中的最小值,matlab调用函数norm(x, -inf)。

p-范数:,即向量元素绝对值的p次方和的1/p次幂,matlab调用函数norm(x, p)。

2、矩阵范数


1-范数:, 列和范数,即所有矩阵列向量绝对值之和的最大值,matlab调用函数norm(A, 1)。

2-范数:,谱范数,即A'A矩阵的最大特征值的开平方。matlab调用函数norm(x, 2)。

∞-范数:,行和范数,即所有矩阵行向量绝对值之和的最大值,matlab调用函数norm(A, inf)。

F-范数:,Frobenius范数,即矩阵元素绝对值的平方和再开平方,matlab调用函数norm(A, ’fro‘)。

下面是解释和理解。


1-范数(列和范数)

 


 
将矩阵沿列方向取绝对值求和,然后擢选出数值最大的那个值作为1-范数。 
比如:


  
  
  1. A =
  2.  
  3.       1     2     3
  4.       4     5     6
  5.       7     8     9
  6.  
  7. >> norm_1 = norm(A, 1)
  8.  
  9. norm_1 =
  10.  
  11.     18


第一列求和结果为:|1|+|4|+|7|=12 
第二列求和结果为:|2|+|5|+|8|=15 
第三列求和结果为:|3|+|6|+|9|=18 
里面最大的就是18,因此矩阵A的列和范数为18。

2-范数(最大特征值开方)


 


这一部分涉及到的我不懂的概念比较多,接下来一一说明。

2-1 共轭转置矩阵


指的是A的共轭转置矩阵,也有这个写法。如果A里面全是实数,那效果就与无二;如果A里面也有复数,则是先对A取共轭(各项实部不变,虚部取相反数),然后再转置,比如:


  
  
  1. A =
  2.  
  3.     1.0000 + 0. 0000i   0.0000 - 2. 0000i
  4.     3.0000 + 0. 0000i   0.0000 - 4. 0000i
  5.  
  6. >> A'
  7.  
  8. ans =
  9.  
  10.     1.0000 + 0. 0000i   3.0000 + 0. 0000i
  11.     0.0000 + 2. 0000i   0.0000 + 4. 0000i

在matlab中A’的意思就是求共轭转置矩阵。

2-2 特征值
矩阵A的特征值被定义为: 
其中被称为“矩阵A的特征向量”,λ被称为“矩阵A的特征值”。 
在matlab中求解矩阵A的特征值方法如下:


  
  
  1. A =
  2.  
  3.       1     2     3
  4.       4     5     6
  5.       7     8     9
  6.  
  7. >> [ V, D] = eig(A)
  8.  
  9. V =
  10.  
  11.     -0.2320   -0.7858     0.4082
  12.     -0.5253   -0.0868   -0.8165
  13.     -0.8187     0.6123     0.4082
  14.  
  15. D =
  16.  
  17.     16.1168         0         0
  18.           0   -1.1168         0
  19.           0         0   -0.0000



矩阵V的每一列都是一个特征向量,D中对应列中的值即与该特征向量相匹配的特征值。以上例V、D第一列为例,此时特征值λ=16.1168,特征向量,用matlab作验证如下:


  
  
  1. >> A = [ 1, 2, 3 ;4, 5, 6 ;7, 8, 9]
  2.  
  3. A =
  4.  
  5.       1     2     3
  6.       4     5     6
  7.       7     8     9
  8.  
  9. >> v = [ -0.2320, -0.5253, -0.8187] '
  10. v =
  11.    -0.2320
  12.    -0.5253
  13.    -0.8187
  14. >> lambda = 16.1168
  15. lambda =
  16.    16.1168
  17. >> A * v
  18. ans =
  19.    -3.7387
  20.    -8.4667
  21.   -13.1947
  22. >> lambda * v
  23. ans =
  24.    -3.7391
  25.    -8.4662
  26.   -13.1948


可知满足。

2-3 矩阵的2-范数


矩阵的2-范数即对矩阵最大特征值开方,如下:


  
  
  1. >> [ V, D] = eig(A'*A)
  2.  
  3. V =
  4.  
  5.     -0.4082   -0.7767     0.4797
  6.     0.8165   -0.0757     0.5724
  7.     -0.4082     0.6253     0.6651
  8.  
  9. D =
  10.  
  11.     0.0000         0         0
  12.           0     1.1414         0
  13.           0         0   283.8586
  14.  
  15. >> sqrt(283.8586)
  16.  
  17. ans =
  18.  
  19.     16.8481

(这里最大特征值为283.8586)

当然,matlab中也有更直接的计算矩阵2-范数的方法,如下:


  
  
  1. >> norm_2 = norm(A, 2)
  2. norm_2 =
  3.     16.8481


两种方法计算出的结果是一样的。

∞-范数(行和范数)


 


和1-范数(列和范数)类似,这里是沿行方向取绝对值求和,将最大的那个值作为矩阵的∞-范数。matlab代码如下:


  
  
  1. >> A
  2.  
  3. A =
  4.  
  5.       1     2     3
  6.       4     5     6
  7.       7     8     9
  8.  
  9. >> norm(A,inf)
  10.  
  11. ans =
  12.  
  13.     24

第一行求和结果为:|1|+|2|+|3|=6 
第二行求和结果为:|4|+|5|+|6|=15 
第三行求和结果为:|7|+|8|+|9|=24 
里面最大的就是24,因此矩阵A的行和范数为24。

1、向量范数

猜你喜欢

转载自blog.csdn.net/weixin_44464721/article/details/108464490