p范數(p norm)


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

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]

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 inequality

p( v) ≥ 0 ( positivity).

 

經常會聽到p范數(p norm)的說法,其實很簡單,可以看成2范數的擴展,但是有一點需要注意:p的范圍是[1, inf)p在(0,1)范圍內定義的並不是范數因為違反了三角不等式(||x+y|| <= ||x|| + ||y||,此處x和y是向量,后面出現x和y的地方也是向量,不再贅述。見下面wikipedia的截圖

 

在p范數下定義的單位球(unit ball)都是凸集(convex set,簡單地說,若集合A中任意兩點的連線段上的點也在集合A中,則A是凸集),但是當0<p<1時,在該定義下的unit ball並不是凸集(注意:我們沒說在該范數定義下,因為如前所述,0<p<1時,並不是范數).下圖展示了p取不同值時unit ball的形狀

 

 

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

在一維空間中,按照p范數的定義,三角不等式總是成立。於是我們可以考慮在二維空間選點(因為二維空間比較簡單),考慮特殊一點的,比如,取x=(0,1), y=(1,0)

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

對於更高維空間都可以取類似的例子,比如三維就取(0,0,1), (0, 1, 0), (1,0,0)

 

下面的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畫圖的工具,比較輕量級,找了我好一會……


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM