仿射 ,仿射集,凸集

学习凸优化的过程中,首先要接触到仿射集与凸集的定义,非常有必要完全理解。

关于锥、凸锥参看另一篇博文:https://blog.csdn.net/robert_chen1988/article/details/78828727

一、仿射集(Affine set),凸集(Convex set)定义

x 1 x 2 是定义在集合 C 中任意两个不同的点,即 x 1 x 2 , 并且 x 1 , x 2 C , C R n ,对任意一个实数 θ ,都有

θ x 1 + ( 1 θ ) x 2 C o r x 2 + θ ( x 1 x 2 ) C

则称 C 为一个仿射集。 若要求 0 θ 1 ,则 C 为一个凸集,可见 一个仿射集必属于凸集(锥跟仿射集并没有隶属关系)。

仿射集的几何意义是:一个集合中任意两点的连线上的点仍然属于这个集合,则该集合为仿射集。个人感觉在三维空间内,整个坐标系才属于仿射集。

注:每一个线性方程组 A x = b 的解为一个仿射集

为什么称作仿射呢? 定义 y = θ x 1 + ( 1 θ ) x 2 ,该表达式可以化为

y = x 2 + θ ( x 1 x 2 )

y 可以表示为通过基点 x 2 ,方向为 x 1 x 2 ,大小为 θ ( x 1 x 2 ) 的一个箭头的末端,如下图所示:

import matplotlib.pyplot as plt
import numpy as np

plt.arrow(2, 3, 4, 8, width = 0.08, color = 'c', length_includes_head = True)

plt.plot(2, 3, 'ro')
plt.annotate('$x_2$', xy = (2.2, 2.8))
plt.plot(5, 9, 'ro')
plt.annotate('$x_1$', xy = (5.2, 8.8))
plt.plot(6, 11, 'ro')
plt.annotate('$y=x_2+\\theta (x_1-x_2), \\theta = 2$', xy = (6.2, 10.8))
plt.xlim((0, 10))
plt.ylim((0, 16))
plt.show()

这里写图片描述
C 是一个仿射集, x 1 , , x k C ,并且 θ 1 + + θ k = 1 , 则

θ 1 x 1 + + θ k x k C

其中, θ 1 x 1 + + θ k x k 称作点 x 1 , , x k 仿射组合
若要求 θ i 0 , i = 1 , , k , 则 θ 1 x 1 + + θ k x k 称作点 x 1 , , x k 凸组合

二、子空间(Subspace)

对于一个仿射集 C ,及其内部任意一点 x 0 ,集合

V = C x 0 = { x x 0 x C }

称作一个子空间。 仿射空间可以看做对一个子空间的平移

性质1:一个子空间 V 为仿射集
性质2:一个子空间 V 为凸锥
性质3:一个子空间 V 为凸集

证明:对于 V 中任意两点 v 1 v 2 ,它们的线性组合 α v 1 + β v 2 ,因为

α v 1 + β v 2 + x 0 = α ( v 1 + x 0 ) + β ( v 2 + x 0 ) + ( 1 α β ) x 0 C

(因为 v 1 + x 0 C , v 2 + x 0 C , 仿射集定义)
所以 α v 1 + β v 2 V ,即一个子空间中任意两点的线性组合仍然属于该子空间。
特别的,我们令 α = 1 β ,则根据仿射集定义,子空间属于一个仿射集。
特别的,我们令 α > 0 , β > 0 ,则根据凸锥的定义,子空间属于一个凸锥。
若我们令 α = 1 β , 0 α 1 ,则估计凸集定义,子空间属于一个凸集。
综合以上,子空间也属于凸锥。

一条直线是一个仿射集合,一个通过原点的直线属于子空间(证明过程类似上面)

三、仿射包(affine hull)

一个集合 C 内所有点的仿射组合,称作该集合的仿射包, 即 aff C :

aff   C = { θ 1 x 1 + + θ k x k x 1 , , x k C , θ 1 + + θ k = 1 }

猜你喜欢

转载自blog.csdn.net/robert_chen1988/article/details/80048245