From 7c14960b5fcbcdd26ccfc49329fa5a2f8d8a5159 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Sat, 8 Jun 2024 00:32:57 +0800 Subject: [PATCH] release post on convex optimization, update opa references --- .../2022-03-29-josh-convex-optimization-1.md | 32 ----- .../2022-03-29-josh-convex-optimization-1.md | 112 ++++++++++++++++++ source/_posts/2023-04-18-josh-oap-part-1-1.md | 4 +- source/_posts/2023-04-20-josh-oap-part-1-2.md | 4 +- source/_posts/2023-04-20-josh-oap-part-1-3.md | 4 +- source/_posts/2023-04-22-josh-oap-part-1-4.md | 4 +- ...ion-1-010-TheLinePassingThroughX1AndX2.png | Bin 0 -> 14309 bytes 7 files changed, 120 insertions(+), 40 deletions(-) delete mode 100644 source/_drafts/2022-03-29-josh-convex-optimization-1.md create mode 100644 source/_posts/2022-03-29-josh-convex-optimization-1.md create mode 100644 source/images/post/2022-03-29-josh-convex-optimization-1/2022-03-29-josh-convex-optimization-1-010-TheLinePassingThroughX1AndX2.png diff --git a/source/_drafts/2022-03-29-josh-convex-optimization-1.md b/source/_drafts/2022-03-29-josh-convex-optimization-1.md deleted file mode 100644 index bedb294..0000000 --- a/source/_drafts/2022-03-29-josh-convex-optimization-1.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Josh 的学习笔记之凸优化 (Part 1 —— 凸集) -mathjax: true -comments: true -copyright: true -sticky: false -toc: - enable: true - number: false - wrap: true - expand_all: true - max_depth: 4 -categories: - - - Josh 的学习笔记 - - 凸优化 -tags: - - 凸优化 -abbrlink: 43146ee9 -date: 2022-03-29 11:07:04 ---- - -# 仿射集合和凸集 - -  设 $x_1 \ne x_2$ 是 $\mathbf{R}^n$ 空间中的两个点,则具有下列形式的点 - -$$ -y = \theta x_1 + (1-\theta)x_2,\theta \in \mathbf{R} -$$ - -组成一条穿过 $x_1$ 和 $x_2$ 的**直线**(*line*). 参数 $\theta = 0$ 对应 $y=x_2$,$\theta = 1$ 表明 $y = x_2$. 参数 $\theta$ 的值在 - - \ No newline at end of file diff --git a/source/_posts/2022-03-29-josh-convex-optimization-1.md b/source/_posts/2022-03-29-josh-convex-optimization-1.md new file mode 100644 index 0000000..4e7e2a3 --- /dev/null +++ b/source/_posts/2022-03-29-josh-convex-optimization-1.md @@ -0,0 +1,112 @@ +--- +title: "Josh's Note — 凸优化
Part 2.1 凸集—仿射集合和凸集" +mathjax: true +comments: true +copyright: true +sticky: false +toc: + enable: true + number: false + wrap: true + expand_all: true + max_depth: 4 +categories: + - - Josh 的学习笔记 + - 凸优化 +tags: + - 凸优化 + - 仿射 + - 保凸运算 +abbrlink: 43146ee9 +date: 2022-03-29 11:07:04 +--- + +$$ +\newcommand{\bfR}{\mathbf{R}} +\def\aff{\mathop{\bf aff}} +\def\relint{\mathop{\bf relint}} +\def\cl{\mathop{\bf cl}} +$$ + +# 1. 直线与线段 + +  设 $x_1 \ne x_2$ 是 $\bfR^n$ 空间中的两个点,则具有下列形式的点 + +$$ +y = \theta x_1 + (1-\theta)x_2,\theta \in \bfR +$$ + +组成一条穿过 $x_1$ 和 $x_2$ 的**直线**(*line*)。参数 $\theta = 0$ 和 $\theta = 1$ 分别对应 $y=x_2$ 和 $y = x_1$。参数 $\theta$ 的值在 0 和 1 之间变动,构成了 $x_1$ 和 $x_2$ 之间的(闭)线段((closed) *line segment*)。 + +  另一种 $y$ 的表示形式 + +$$ +y = x_2 + \theta (x_1 - x_2) +$$ + +可以解释为:$y$ 是**基点**(*base point*)$x_2$(对应 $\theta = 0$)和**方向**(*direction*)$x_1 - x_2$(由 $x_2$ 指向 $x_1$)乘以参数 $\theta$ 的和。因此,$\theta$ 给出了 $y$ 在由 $x_2$ 通向 $x_1$ 的路上的位置。当 $\theta$ 由 $0$ 增加到 $1$, 点 $y$ 相应地由 $x_2$ 移动到 $x_1$。如果 $\theta > 1$,点 $y$ 在超越了 $x_1$ 的直线上。[图 1](#图1) 给出了直观的解释。 + + + +![图 1 通过 $x_1$ 和 $x_2$ 的直线可以参数化描述为 $\theta x_1 + (1-\theta)x_2$, 其中 $\theta$ 在 $\bfR$ 上变化。$x_1$ 和 $x_2$ 之间的线段由深色所示,对应处于 $0$ 和 $1$ 之间的 $\theta$。](../images/post/2022-03-29-josh-convex-optimization-1/2022-03-29-josh-convex-optimization-1-010-TheLinePassingThroughX1AndX2.png){width=800px} + + + +# 2. 仿射集合和凸集 + +  如果通过集合 $C \subseteq \bfR^n$ 中任意两个不同点的直线仍然在集合 $C$ 中,那么称集合 $C$ 是**仿射**(*affine*)的。也就是说,$C \subseteq \bfR^n$ 是仿射的等价于:对于任意 $x_1, x_2 \in C$ 及 $\theta \in \bfR$ 有 $\theta x_1 + (1-\theta)x_2 \in C$。换言之,$C$ 包含了 $C$ 中任意两点的系数之和为 $1$ 的线性组合。 + +  这个概念可以扩展到多个点的情况。若 $\theta_1 + \cdots + \theta_k = 1$,则称具有 $\theta_1 x_1 + \cdots + \theta_k x_k$ 形式的点为 $x_1, \cdots, x_k$ 的**仿射组合**(*affine combination*)。利用仿射集合的定义(即仿射集合包含其中任意两点的仿射组合),可以归纳出以下结论:一个仿射集合包含其中任意点的仿射组合,即如果 $C$ 是一个仿射集合,$x_1, \cdots, x_k \in C$,并且 $\theta_1 + \cdots + \theta_k = 1$,那么 $\theta_1 x_1 + \cdots + \theta_k x_k$ 仍然在 $C$ 中。 + +  如果 $C$ 是一个仿射集合并且 $x_0 \in C$,则集合 + +$$ +V = C - x_0 = \left\{ x - x_0 \middle| x \in C \right\} +$$ + +是一个子空间,即关于加法和数乘是封闭的。 + +> 简单说明:设 $v_1, v_2 \in V$,$\alpha, \beta \in \bfR$,则有 $v_1 + x_0 \in C$,$v_2 + x_0 \in C$。因为 $C$ 是仿射的,且 $\alpha + \beta + (1 - \alpha - \beta) = 1$,所以 +> +> $$ +> \alpha v_1 + \beta v_2 + x_0 = \alpha (v_1 + x_0) + \beta(v_2 + x_0) + (1 - \alpha - \beta)x_0 \in C +> $$ +> +> 由 $\alpha v_1 + \beta v_2 + x_0 \in C$,可知 $\alpha v_1 + \beta v_2 \in V$。 + +  因此,仿射集合 $C$ 可以表示为 + +$$ +C = V + x_0 = \left\{ v + x_0 \middle| v \in V \right\} +$$ + +即一个子空间加上一个偏移。与仿射集合 $C$ 相关联的子空间 $V$ 与 $x_0$ 的选取无关,所以 $x_0$ 可以是 $C$ 中的任意一点。定义仿射集合 $C$ 的维数为子空间 $V = C - x_0$ 的维数,其中 $x_0$ 是 $C$ 中的任意元素。 + +  称由集合 $C \subseteq \bfR^n$ 中的点的所有仿射组合组成的集合为 $C$ 的**仿射包**(*affine hull*),记为 $\aff{C}$: + +$$ +\aff{C} = \left\{ \theta_1 x_1 + \cdots + \theta_k x_k \middle| x_1, \cdots, x_k \in C, \theta_1 + \cdots + \theta_k = 1 \right\} +$$ + +仿射包是包含 $C$ 的最小的仿射集合,也就是说:如果 $S$ 是满足 $C \subseteq S$ 的仿射集合,那么 $\aff{C} \subseteq S$。 + +# 3. 仿射维数与相对内部 + +  定义集合 $C$ 的仿射维数为其仿射包的维数。仿射维数在凸分析及凸优化中十分有用,但它与其他维数的定义常常不相容。 + +> 举例:考虑 $\bfR^2$ 上的单位圆环 $\left\{x\in\bfR^2\middle| x_1^2 + x_2^2 = 1 \right\}$。它的仿射包是全空间 $\bfR^2$,所以其仿射维数为 $2$。但是,在其他 +大多数维数的定义下,$\bfR^2$ 上的单位圆环的维数为 $1$。 + +  如果集合 $C \subseteq \bfR^n$ 的仿射维数小于 $n$, 那么这个集合在仿射集合 $\aff C \ne \bfR^n$ 中。定义集合 $C$ 的**相对内部**(*relative interior*)为 $\aff C$ 的内部,记为 $\relint C$,即 + +$$ +\relint C = \left\{ x \in C \middle| B(x,r) \cap \aff C \subseteq C\ 对于某些\ r > 0 \right\} +$$ + +其中 $B(x,r) = \left\{ y \middle| \left\| y-x \right\| \leqslant r \right\}$,即半径为 $r$,中心为 $x$ 并由范数 $\| \cdot \|$ 定义的球(这里的 $\| \cdot \|$ 可以是任意范数,并且所有范数定义了相同的相对内部)。于是可以定义 +集合 C 的**相对边界**(*relative boundary*)为 $\cl C\ \backslash \relint C$, 此处 $\cl C$ 表示 $C$ 的闭包。 + +# 参考文献 + +1. Stephen P. Boyd and Lieven Vandenberghe, *Convex optimization*. Cambridge, UK: Cambridge University Press, 2004. +2. Stephen P. Boyd and Lieven Vandenberghe, *凸优化*. 北京: 清华大学出版社, 2013. diff --git a/source/_posts/2023-04-18-josh-oap-part-1-1.md b/source/_posts/2023-04-18-josh-oap-part-1-1.md index 9c82950..8cf562f 100644 --- a/source/_posts/2023-04-18-josh-oap-part-1-1.md +++ b/source/_posts/2023-04-18-josh-oap-part-1-1.md @@ -423,5 +423,5 @@ $$\begin{equation} # 参考文献 -1. Van Trees, Harry L. *Optimum array processing: Part IV of detection, estimation, and modulation theory.* John Wiley & Sons, 2002. -2. Van Trees, Harry L, 汤俊. *最优阵列处理技术.* 清华大学出版社. 2008. +1. Harry L. Van Trees. *Optimum array processing: Part IV of detection, estimation, and modulation theory.* New York, NY, USA: John Wiley & Sons, 2002. +2. Harry L. Van Trees, 汤俊. *最优阵列处理技术.* 北京:清华大学出版社. 2008. diff --git a/source/_posts/2023-04-20-josh-oap-part-1-2.md b/source/_posts/2023-04-20-josh-oap-part-1-2.md index 378ad87..25f85d3 100644 --- a/source/_posts/2023-04-20-josh-oap-part-1-2.md +++ b/source/_posts/2023-04-20-josh-oap-part-1-2.md @@ -329,8 +329,8 @@ $$\begin{equation} \label{WeightVecCalculationWithAllZeroExceptMainAxis} # 参考文献 -1. Van Trees, Harry L. *Optimum array processing: Part IV of detection, estimation, and modulation theory.* John Wiley & Sons, 2002. -2. Van Trees, Harry L, 汤俊. *最优阵列处理技术.* 清华大学出版社. 2008. +1. Harry L. Van Trees. *Optimum array processing: Part IV of detection, estimation, and modulation theory.* New York, NY, USA: John Wiley & Sons, 2002. +2. Harry L. Van Trees, 汤俊. *最优阵列处理技术.* 北京:清华大学出版社. 2008. [阵列流形矢量的定义]: https://josh-gao.top/posts/8b61f5a7.html#DefinitionOfArrayManifoldVector [复权矢量]: https://josh-gao.top/posts/8b61f5a7.html#ComplexWeightVector diff --git a/source/_posts/2023-04-20-josh-oap-part-1-3.md b/source/_posts/2023-04-20-josh-oap-part-1-3.md index 19a8d30..4604c75 100644 --- a/source/_posts/2023-04-20-josh-oap-part-1-3.md +++ b/source/_posts/2023-04-20-josh-oap-part-1-3.md @@ -629,5 +629,5 @@ $$\begin{equation} # 参考文献 -1. Van Trees, Harry L. *Optimum array processing: Part IV of detection, estimation, and modulation theory.* John Wiley & Sons, 2002. -2. Van Trees, Harry L, 汤俊. *最优阵列处理技术.* 清华大学出版社. 2008. +1. Harry L. Van Trees. *Optimum array processing: Part IV of detection, estimation, and modulation theory.* New York, NY, USA: John Wiley & Sons, 2002. +2. Harry L. Van Trees, 汤俊. *最优阵列处理技术.* 北京:清华大学出版社. 2008. diff --git a/source/_posts/2023-04-22-josh-oap-part-1-4.md b/source/_posts/2023-04-22-josh-oap-part-1-4.md index 446a8a5..3c9b8fa 100644 --- a/source/_posts/2023-04-22-josh-oap-part-1-4.md +++ b/source/_posts/2023-04-22-josh-oap-part-1-4.md @@ -411,8 +411,8 @@ $$\begin{equation} # 参考文献 -1. Van Trees, Harry L. *Optimum array processing: Part IV of detection, estimation, and modulation theory.* John Wiley & Sons, 2002. -2. Van Trees, Harry L, 汤俊. *最优阵列处理技术.* 清华大学出版社. 2008. +1. Harry L. Van Trees. *Optimum array processing: Part IV of detection, estimation, and modulation theory.* New York, NY, USA: John Wiley & Sons, 2002. +2. Harry L. Van Trees, 汤俊. *最优阵列处理技术.* 北京:清华大学出版社. 2008. [1.1 节]: https://josh-gao.top/posts/8b61f5a7.html [1.2 节]: https://josh-gao.top/posts/de20fd09.html diff --git a/source/images/post/2022-03-29-josh-convex-optimization-1/2022-03-29-josh-convex-optimization-1-010-TheLinePassingThroughX1AndX2.png b/source/images/post/2022-03-29-josh-convex-optimization-1/2022-03-29-josh-convex-optimization-1-010-TheLinePassingThroughX1AndX2.png new file mode 100644 index 0000000000000000000000000000000000000000..2b5c871ff2c3c667d99aa72369b33da5af3e2f46 GIT binary patch literal 14309 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 IF8}$z05?XEX8-^I literal 0 HcmV?d00001