對正數數列 q₁, q₂, ..., qₙ,定義 冪平均數(廣義平均數):
Mₓ = ( (q₁ˣ + q₂ˣ + ... + qₙˣ) / n )^(1/x) (x ≠ 0)
M₀ = (q₁ q₂ ... qₙ)^(1/n) (幾何平均數,x→0 極限)
均值不等式指出:x < y ⟹ Mₓ ≤ Mᵧ,等號僅當所有 qᵢ 相等時成立。特例:
M₋₁:調和平均數M₀:幾何平均數M₁:算術平均數M₂:平方平均數(RMS)當 x → -∞ 趨近最小值,x → +∞ 趨近最大值。
程式隨機生成 1000 個 [100, 400) 區間整數,計算 x ∈ [-100, 100] 時的 Mₓ 並繪製曲線,同時標示最大值與最小值水平線。
void draw(HDC hdc) {
const int N = 1000;
double q[N];
srand((unsigned)time(0));
for (int i = 0; i < N; i++) q[i] = rand() % 300 + 100;
double maxv = q[0], minv = q[0];
for (int i = 1; i < N; i++) {
if (q[i] > maxv) maxv = q[i];
if (q[i] < minv) minv = q[i];
}
// 畫最大/最小值參考線
MoveToEx(hdc, -400+450, (int)-maxv+600, 0); LineTo(hdc, 400+450, (int)-maxv+600);
MoveToEx(hdc, -400+450, (int)-minv+600, 0); LineTo(hdc, 400+450, (int)-minv+600);
// x < 0
for (int i = -100; i < 0; i++) {
double sum = 0;
for (int j = 0; j < N; j++) sum += pow(q[j], i);
double y = pow(sum / N, 1.0 / i);
Ellipse(hdc, i*4+450-2, (int)-y+600-2, i*4+450+2, (int)-y+600+2);
}
// x = 0 (幾何平均數)
double y = 1;
for (int i = 0; i < N; i++) y *= pow(q[i], 1.0/N);
Ellipse(hdc, 450-4, (int)-y+600-4, 450+4, (int)-y+600+4);
// x > 0
for (int i = 1; i < 100; i++) {
double sum = 0;
for (int j = 0; j < N; j++) sum += pow(q[j], i);
double y = pow(sum / N, 1.0 / i);
Ellipse(hdc, i*4+450-2, (int)-y+600-2, i*4+450+2, (int)-y+600+2);
}
}

x=0 處平滑過渡為幾何平均數Mₓ = (Σ wᵢ qᵢˣ)^(1/x),Σ wᵢ = 1x→0 對應熵、x=1 對應期望值