向量:指具有大小和方向的量。它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的大小。与向量对应的量叫做数量,数量只有大小,没有方向;
范数:是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,范数是一个函数,是矢量空间内的所有矢量赋予非零的正长度或大小;
向量的1范数:向量的各元素的绝对值之和
||X||₁ = |1| + |-2| + |3| + |4| = 10
代码1:
Array(1,-2,3,4).map(abs(_)).sum |
代码2:
norm(DenseVector(1,-2,3,4),1) |
向量的2范数:向量的各元素的平方之和再开平方根
||X||₂ = (1x1 + -2x-2 + 3x3 + 4x4)^(1/2) = 5.477225575051661
代码1:
math.sqrt( Array(1,-2,3,4).map(v=>{ math.pow(v,2) }).sum |
代码2:
norm(DenseVector(1,-2,3,4),2 |
向量的P范数:向量的各元素的P次方之和再开P次方根
||X||p = (|1|^p + |-2|^p + |3|^p + |4|^p)^(1/p)
代码1:
math.pow( Array(1,-2,3,4).map(v=>{ math.pow(abs(v),3) }).sum ,1.0/3) |
代码2:
norm(DenseVector(1,-2,3,4),3) |
向量的负无穷范数:向量的各元素的绝对值中最小的
||X||-∞ = [1,-2,3,-4] = 1
代码1:
Array(1,-2,3,-4).map(abs(_)).min |
向量的正无穷范数:向量的各元素的绝对值中最大的
||X||∞ = [1,-2,3,-4] = 4
代码1:
Array(1,-2,3,-4).map(abs(_)).maxArray(1,-2,3,-4).map(abs(_)).max |