如何在CVX里面表示log(1+1/x)
y log ( y x ) y\log(\frac{y}{x}) ylog(xy)是一个凸函数,具体可查看凸优化书本的关于透视函数这一章节。
这个函数在CVX里面有专门的函数表达,即 rel_entr ( y , x ) \text{rel\_entr}(y,x) rel_entr(y,x).
因此,我们展示使用
rel_entr
(
)
\text{rel\_entr}()
rel_entr()函数来表示
log
(
1
+
1
/
x
)
\log(1+1/x)
log(1+1/x):
(1)对于通式
y
log
(
1
+
y
x
)
y\log(1+\frac{y}{x})
ylog(1+xy)的变换
y
log
(
1
+
y
x
)
=
y
log
(
x
+
y
x
)
=
(
x
+
y
)
log
(
x
+
y
x
)
−
x
log
(
x
+
y
x
)
(a)
y\log(1+\frac{y}{x}) = y\log(\frac{x+y}{x}) = (x+y)\log(\frac{x+y}{x})-x\log(\frac{x+y}{x}) \tag{a}
ylog(1+xy)=ylog(xx+y)=(x+y)log(xx+y)−xlog(xx+y)(a)
对于
−
x
log
(
x
+
y
x
)
-x\log(\frac{x+y}{x})
−xlog(xx+y), 有
−
x
log
(
x
+
y
x
)
=
x
log
(
(
x
+
y
x
)
−
1
)
=
x
log
(
x
x
+
y
)
(b)
-x\log(\frac{x+y}{x}) = x\log \Big((\frac{x+y}{x})^{-1}\Big) = x \log(\frac{x}{x+y}) \tag{b}
−xlog(xx+y)=xlog((xx+y)−1)=xlog(x+yx)(b)
将公式(b)代入公式(a),得到:
y
log
(
1
+
y
x
)
=
y
log
(
x
+
y
x
)
=
(
x
+
y
)
log
(
x
+
y
x
)
+
x
log
(
x
x
+
y
)
(c)
y\log(1+\frac{y}{x}) = y\log(\frac{x+y}{x}) = (x+y)\log(\frac{x+y}{x}) + x \log(\frac{x}{x+y}) \tag{c}
ylog(1+xy)=ylog(xx+y)=(x+y)log(xx+y)+xlog(x+yx)(c)
所以,
y
log
(
1
+
y
x
)
y\log(1+\frac{y}{x})
ylog(1+xy)在CVX里面可以表达为
rel_entr
(
x
+
y
,
x
)
+
rel_entr
(
x
,
x
+
y
)
\text{rel\_entr}(x+y,x)+\text{rel\_entr}(x,x+y)
rel_entr(x+y,x)+rel_entr(x,x+y)
(2)公式
log
(
1
+
1
/
x
)
\log(1+1/x)
log(1+1/x)的表达:
令
y
=
1
y=1
y=1,所以我们可以得到,
log
(
1
+
1
/
x
)
→
rel_entr
(
x
+
1
,
x
)
+
rel_entr
(
x
,
x
+
1
)
\log(1+1/x) \rightarrow \text{rel\_entr}(x+1,x)+\text{rel\_entr}(x,x+1)
log(1+1/x)→rel_entr(x+1,x)+rel_entr(x,x+1)