p範數(p norm)

先回顧一下範數的定義(en.wikipedia.org/wiki/Norm_(mathematics)):python

Given a vector space V over a subfield F of the complex numbers, a norm on V is a function p: VR with the following properties:[1]ubuntu

For all aF and all u, vV,工具

  1. p(av) = |a| p(v), (absolute homogeneity or absolute scalability).
  2. p(u + v) ≤ p(u) + p(v) (triangle inequality or subadditivity).
  3. If p(v) = 0 then v is the zero vector (separates points).

By the first axiom, absolute homogeneity, we have p(0) = 0 and p(-v) = p(v), so that by the triangle inequalityspa

p( v) ≥ 0 ( positivity).

 

常常會聽到p範數(p norm)的說法,其實很簡單,能夠當作2範數的擴展,可是有一點須要注意:p的範圍是[1, inf)p在(0,1)範圍內定義的並非範數由於違反了三角不等式(||x+y|| <= ||x|| + ||y||,此處x和y是向量,後面出現x和y的地方也是向量,再也不贅述。見下面wikipedia的截圖scala

 

在p範數下定義的單位球(unit ball)都是凸集(convex set,簡單地說,若集合A中任意兩點的連線段上的點也在集合A中,則A是凸集),可是當0<p<1時,在該定義下的unit ball並非凸集(注意:咱們沒說在該範數定義下,由於如前所述,0<p<1時,並非範數).下圖展現了p取不一樣值時unit ball的形狀code

 

 

當0<p<1時,上面相似p範數的定義不能對任意兩點知足三角不等式,也就是說,存在兩點,它們不知足三角不等式。這個論斷證實起來很簡單,只要找出兩個這樣的點就好了。orm

在一維空間中,按照p範數的定義,三角不等式老是成立。因而咱們能夠考慮在二維空間選點(由於二維空間比較簡單),考慮特殊一點的,好比,取x=(0,1), y=(1,0)blog

||x|| = 1, ||y|| = 1,||x+y|| = 2^(1/p) > 2 == ||x|| + ||y||,這就是一個違反三角不等式的例子,證畢。ip

對於更高維空間均可以取相似的例子,好比三維就取(0,0,1), (0, 1, 0), (1,0,0)ci

 

下面的python(ver 2.7)代碼能夠用來畫p取不一樣值時的unit ball:

import numpy as np
from matplotlib.pyplot import *

figure(); hold(True)
r = 1
linestyle = ['b-','k-','m-','r-','y-']
p_values = (0.25, 0.5, 1, 2, 4)
for i,p in enumerate(p_values):
    x = np.arange(-r,r+1e-5,1/128.0)
    y = (r**p - (abs(x)**p))**(1.0/p)
    y = zip(y, -y)
    plot(x, y, linestyle[i], label=str(i))
axis('equal')
show()

結果是這樣的(由內到外p逐漸增大,藍線表明p=0.25,黃線表明p=4):

 

--

第一個圖是截圖後用MyPaint作的標記(紅線),這是一個ubuntu(Linux)平臺上相似於window畫圖的工具,比較輕量級,找了我好一會……

相關文章
相關標籤/搜索