文章目录

  • Lagrange对偶函数
  • 共轭函数
  • Lagrange对偶函数和共轭函数的关系

利用对偶函数可以从对偶函数最大化的角度来分析原始问题的最小化,这类似于信号分析中,通过信号的频域特性来分析其时域特性。相当于对优化问题另一个维度的解释, 对偶在理解和求解优化问题中起着关键的作用

Lagrange对偶函数

标准优化问题(不一定为凸)形式:
p⋆=min⁡f0(x)s.t. fi(x)⩽0,i=1,…,mhi(x)=0,i=1,…,p\begin{aligned} p^{\star}=\min & \quad f_0(\mathbf{x}) \\ \text { s.t. } & \quad f_i(\mathbf{x}) \leqslant 0, i=1, \ldots, m \\ & \quad h_i(\mathbf{x})=0, i=1, \ldots, p \end{aligned} p⋆=min s.t. ​f0​(x)fi​(x)⩽0,i=1,…,mhi​(x)=0,i=1,…,p​
其中,定义域为:D=(⋂i=0mdom⁡fi)∩(⋂i=1pdom⁡hi)\mathcal{D}=\left(\bigcap_{i=0}^m \operatorname{dom} f_i\right) \cap\left(\bigcap_{i=1}^p \operatorname{dom} h_i\right)D=(⋂i=0m​domfi​)∩(⋂i=1p​domhi​)。

该问题称为原问题,未知变量称作原始变量

Lagrange函数的定义为:
L(x,λ,ν)=f0(x)+∑i=1mλifi(x)+∑i=1pνihi(x)\mathcal{L}(\mathbf{x}, \boldsymbol{\lambda}, \boldsymbol{\nu})=f_0(\mathbf{x})+\sum_{i=1}^m \lambda_i f_i(\mathbf{x})+\sum_{i=1}^p \nu_i h_i(\mathbf{x}) L(x,λ,ν)=f0​(x)+i=1∑m​λi​fi​(x)+i=1∑p​νi​hi​(x)
其定义域为dom⁡L=D×Rm×Rp\operatorname{dom} \mathcal{L}=\mathcal{D} \times \mathbb{R}^m \times \mathbb{R}^pdomL=D×Rm×Rp。λ=[λ1,…,λm]T\boldsymbol{\lambda}=\left[\lambda_1, \ldots, \lambda_m\right]^{\mathrm{T}}λ=[λ1​,…,λm​]T和ν=[ν1,…,νp]T\boldsymbol{\nu}=\left[\nu_1, \ldots, \nu_p\right]^{\mathrm{T}}ν=[ν1​,…,νp​]T称作对偶变量或者Lagrange乘子

Lagrange对偶函数(或对偶函数)定义为:
g(λ,ν)≜inf⁡x∈DL(x,λ,ν)g(\boldsymbol{\lambda}, \boldsymbol{\nu}) \triangleq \inf _{\mathbf{x} \in \mathcal{D}} \mathcal{L}(\mathbf{x}, \boldsymbol{\lambda}, \boldsymbol{\nu}) g(λ,ν)≜x∈Dinf​L(x,λ,ν)

:不难发现Lagrange函数时凹函数。因为对偶函数是关于(λ,ν)(\boldsymbol{\lambda}, \boldsymbol{\nu})(λ,ν)的放射函数(凹函数)的逐点下确界,因此为凹。(利用上镜图epigraph可以证明。)

其定义域为:dom⁡g={(λ,ν)∣g(λ,ν)>−∞}\operatorname{dom} g=\{(\boldsymbol{\lambda}, \boldsymbol{\nu}) \mid g(\boldsymbol{\lambda}, \boldsymbol{\nu})>-\infty\}domg={(λ,ν)∣g(λ,ν)>−∞}

  • 对偶函数和原始问题的关系:
    对于任意的λ⪰0\boldsymbol{\lambda} \succeq \mathbf{0}λ⪰0和ν∈Rp\boldsymbol{\nu} \in \mathbb{R}^pν∈Rp,有:

g(λ,ν)⩽p⋆g(\boldsymbol{\lambda}, \boldsymbol{\nu}) \leqslant p^{\star}g(λ,ν)⩽p⋆

证明:假设x~\tilde{\mathbf{x}}x~是原问题的一个可行解,择优:

L(x~,λ,ν)=f0(x~)+∑i=1mλifi(x~)+∑i=1pνihi(x~)⩽f0(x~)\mathcal{L}(\tilde{\mathbf{x}}, \boldsymbol{\lambda}, \nu)=f_0(\tilde{\mathbf{x}})+\sum_{i=1}^m \lambda_i f_i(\tilde{\mathbf{x}})+\sum_{i=1}^p \nu_i h_i(\tilde{\mathbf{x}}) \leqslant f_0(\tilde{\mathbf{x}}) L(x~,λ,ν)=f0​(x~)+i=1∑m​λi​fi​(x~)+i=1∑p​νi​hi​(x~)⩽f0​(x~)
由此可得:
p⋆⩾f0(x~)⩾L(x~,λ,ν)⩾inf⁡x∈DL(x,λ,ν)=g(λ,ν)p^{\star} \geqslant f_0(\tilde{\mathbf{x}}) \geqslant \mathcal{L}(\tilde{\mathbf{x}}, \boldsymbol{\lambda}, \boldsymbol{\nu}) \geqslant \inf _{\mathbf{x} \in \mathcal{D}} \mathcal{L}(\mathbf{x}, \boldsymbol{\lambda}, \boldsymbol{\nu})=g(\boldsymbol{\lambda}, \boldsymbol{\nu}) p⋆⩾f0​(x~)⩾L(x~,λ,ν)⩾x∈Dinf​L(x,λ,ν)=g(λ,ν)

共轭函数

函数f:Rn→Rf: \mathbb{R}^n \rightarrow \mathbb{R}f:Rn→R的共轭函数记作f∗:Rn→Rf^*: \mathbb{R}^n \rightarrow \mathbb{R}f∗:Rn→R,定义为:

f∗(y)=sup⁡x∈dom⁡f(yTx−f(x))f^*(\mathbf{y})=\sup _{\mathbf{x} \in \operatorname{dom} f}\left(\mathbf{y}^{\mathrm{T}} \mathbf{x}-f(\mathbf{x})\right) f∗(y)=x∈domfsup​(yTx−f(x))

其定义域为:dom⁡f∗={y∣f∗(y)<∞}\operatorname{dom} f^*=\left\{\mathbf{y} \mid f^*(\mathbf{y})<\infty\right\}domf∗={y∣f∗(y)<∞}

  • 不难看出,无论f(x)f(\mathbf{x})f(x)的凹凸性,f∗(y)f^*(\mathbf{y})f∗(y)是一个凸函数(仿射函数的驻点最大化是凸函数)。

关于共轭函数一些重要的性质:

  • 如果f(x)f(\mathbf{x})f(x)是可微的,则y=∇xf(x∗)∈dom⁡f∗\mathbf{y}=\nabla_{\mathbf{x}} f\left(\mathbf{x}^*\right) \in \operatorname{dom} f^*y=∇x​f(x∗)∈domf∗是获得f∗(y)f^*(\mathbf{y})f∗(y)的必要条件。(因为共轭函数的最优值必然满足∇x(yTx−f(x))=0\nabla_{\mathbf{x}}\left(\mathbf{y}^{\mathrm{T}} \mathbf{x}-f(\mathbf{x})\right)=\mathbf{0}∇x​(yTx−f(x))=0)。
  • 如果f(x)f(\mathbf{x})f(x)是可微且凸的,则y=∇xf(x⋆)\mathbf{y}=\nabla_{\mathbf{x}} f\left(\mathbf{x}^{\star}\right)y=∇x​f(x⋆)变为了充分条件,此时有:f∗(y)=(x⋆)T∇xf(x⋆)−f(x⋆)f^*(\mathbf{y})=\left(\mathbf{x}^{\star}\right)^{\mathrm{T}} \nabla_{\mathbf{x}} f\left(\mathbf{x}^{\star}\right)-f\left(\mathbf{x}^{\star}\right)f∗(y)=(x⋆)T∇x​f(x⋆)−f(x⋆),其中x⋆\mathrm{x}^{\star}x⋆由y=∇xf(x⋆)\mathbf{y}=\nabla_{\mathbf{x}} f\left(\mathbf{x}^{\star}\right)y=∇x​f(x⋆)得到。(成立的原因是,共轭函数的二阶导恰好半正定,因此一阶条件满足的点必是其最优解)。

下面给出一些简单的凸函数的共轭函数:

  • 仿射函数:f(x)=ax+b↔f∗(y)=−b,y∈{a}f(x)=a x+b \leftrightarrow f^*(y)=-b, y \in\{a\}f(x)=ax+b↔f∗(y)=−b,y∈{a}
  • 负对数函数:f(x)=−log⁡x↔f∗(y)=−1−log⁡(−y)f(x)=-\log x \leftrightarrow f^*(y)=-1-\log (-y)f(x)=−logx↔f∗(y)=−1−log(−y)
  • 负熵函数:f(x)=xlog⁡x↔f∗(y)=yey−1−ey−1(y−1)=ey−1f(x)=x \log x \leftrightarrow f^*(y)=y \mathrm{e}^{y-1}-\mathrm{e}^{y-1}(y-1)=\mathrm{e}^{y-1}f(x)=xlogx↔f∗(y)=yey−1−ey−1(y−1)=ey−1
  • 严格图二次函数:f(x)=12xTQx↔f∗(y)=12yTQ−1yf(\mathbf{x})=\frac{1}{2} \mathbf{x}^{\mathrm{T}} \mathbf{Q} \mathbf{x} \leftrightarrow f^*(\mathbf{y})=\frac{1}{2} \mathbf{y}^{\mathrm{T}} \mathbf{Q}^{-1} \mathbf{y}f(x)=21​xTQx↔f∗(y)=21​yTQ−1y

一些重要的推论

  • 如果fff是闭凸函数,则有f∗∗=ff^{* *}=ff∗∗=f。

其证明也很容易,假定fff是可微的,令y=∇f(x0)∈dom⁡f∗\mathbf{y}=\nabla f\left(\mathbf{x}_0\right) \in \operatorname{dom} f^*y=∇f(x0​)∈domf∗,则f∗(y)f^*(\mathbf{y})f∗(y)的共轭为:
f∗∗(x)=sup⁡y∈dom⁡f∗{xTy−f∗(y)}=sup⁡x0∈dom⁡f{xT∇f(x0)−∇f(x0)Tx0+f(x0)}=sup⁡x0∈dom⁡{f(x0)+∇f(x0)T(x−x0)}=f(x)\begin{aligned} f^{* *}(\mathbf{x}) &=\sup _{\mathbf{y} \in \operatorname{dom} f^*}\left\{\mathbf{x}^{\mathrm{T}} \mathbf{y}-f^*(\mathbf{y})\right\} \\ &=\sup _{\mathbf{x}_0 \in \operatorname{dom} f}\left\{\mathbf{x}^{\mathrm{T}} \nabla f\left(\mathbf{x}_0\right)-\nabla f\left(\mathbf{x}_0\right)^{\mathrm{T}} \mathbf{x}_0+f\left(\mathbf{x}_0\right)\right\} \\ &=\sup _{\mathbf{x}_0 \in \operatorname{dom}}\left\{f\left(\mathbf{x}_0\right)+\nabla f\left(\mathbf{x}_0\right)^{\mathrm{T}}\left(\mathbf{x}-\mathbf{x}_0\right)\right\}\\&=f(\mathbf{x}) \end{aligned} f∗∗(x)​=y∈domf∗sup​{xTy−f∗(y)}=x0​∈domfsup​{xT∇f(x0​)−∇f(x0​)Tx0​+f(x0​)}=x0​∈domsup​{f(x0​)+∇f(x0​)T(x−x0​)}=f(x)​

  • 即时fff是非凸的,其共轭依然是凸函数,并且此时有f∗∗=gf∗∗=gff^{* *}=g_f^{* *}=g_ff∗∗=gf∗∗​=gf​(gfg_fgf​是函数可微非凸函数fff的凸包络)

Lagrange对偶函数和共轭函数的关系

考虑如下仿射约束的优化问题:
min⁡f0(x)s.t. x=0\begin{aligned} &\min f_0(\mathbf{x}) \\ &\text { s.t. } \mathbf{x}=\mathbf{0} \end{aligned} ​minf0​(x) s.t. x=0​
其Lagrange函数为:L(x,ν)=f0(x)+νTx\mathcal{L}(\mathbf{x}, \boldsymbol{\nu})=f_0(\mathbf{x})+\boldsymbol{\nu}^{\mathrm{T}} \mathbf{x}L(x,ν)=f0​(x)+νTx,其对应的对偶函数为:
g(ν)=inf⁡x{f0(x)+νTx}=−sup⁡x{(−ν)Tx−f0(x)}=−f0∗(−ν)\begin{aligned} g(\boldsymbol{\nu}) &=\inf _{\mathbf{x}}\left\{f_0(\mathbf{x})+\boldsymbol{\nu}^{\mathrm{T}} \mathbf{x}\right\} \\ &=-\sup _{\mathbf{x}}\left\{(-\boldsymbol{\nu})^{\mathrm{T}} \mathbf{x}-f_0(\mathbf{x})\right\}=-f_0^*(-\boldsymbol{\nu}) \end{aligned} g(ν)​=xinf​{f0​(x)+νTx}=−xsup​{(−ν)Tx−f0​(x)}=−f0∗​(−ν)​
其中,dom⁡g=−dom⁡f0∗\operatorname{dom} g=-\operatorname{dom} f_0^*domg=−domf0∗​。由于f0∗f_0^*f0∗​是凸的,所以g(ν)g(\boldsymbol{\nu})g(ν)是凹的。

考虑更一般的优化问题形式:
min⁡f0(x)s.t. Ax⪯b,Cx=d\begin{array}{ll} \min & f_0(\mathbf{x}) \\ \text { s.t. } & \mathbf{A x} \preceq \mathbf{b}, \mathbf{C x}=\mathbf{d} \end{array} min s.t. ​f0​(x)Ax⪯b,Cx=d​

此时有:
g(λ,ν)=inf⁡x{f0(x)+λT(Ax−b)+νT(Cx−d)}=−bTλ−dTν+inf⁡x{f0(x)+(ATλ+CTν)Tx}=−bTλ−dTν−sup⁡x{−(ATλ+CTν)Tx−f0(x)}=−bTλ−dTν−f0∗(−ATλ−CTν)\begin{aligned} g(\boldsymbol{\lambda}, \boldsymbol{\nu}) &=\inf _{\mathbf{x}}\left\{f_0(\mathbf{x})+\boldsymbol{\lambda}^{\mathrm{T}}(\mathbf{A} \mathbf{x}-\mathbf{b})+\boldsymbol{\nu}^{\mathrm{T}}(\mathbf{C} \mathbf{x}-\mathbf{d})\right\} \\ &=-\mathbf{b}^{\mathrm{T}} \boldsymbol{\lambda}-\mathbf{d}^{\mathrm{T}} \boldsymbol{\nu}+\inf _{\mathbf{x}}\left\{f_0(\mathbf{x})+\left(\mathbf{A}^{\mathrm{T}} \boldsymbol{\lambda}+\mathbf{C}^{\mathrm{T}} \boldsymbol{\nu}\right)^{\mathrm{T}} \mathbf{x}\right\} \\ &=-\mathbf{b}^{\mathrm{T}} \boldsymbol{\lambda}-\mathbf{d}^{\mathrm{T}} \boldsymbol{\nu}-\sup _{\mathbf{x}}\left\{-\left(\mathbf{A}^{\mathrm{T}} \boldsymbol{\lambda}+\mathbf{C}^{\mathrm{T}} \boldsymbol{\nu}\right)^{\mathrm{T}} \mathbf{x}-f_0(\mathbf{x})\right\} \\ &=-\mathbf{b}^{\mathrm{T}} \boldsymbol{\lambda}-\mathbf{d}^{\mathrm{T}} \boldsymbol{\nu}-f_0^*\left(-\mathbf{A}^{\mathrm{T}} \boldsymbol{\lambda}-\mathbf{C}^{\mathrm{T}} \boldsymbol{\nu}\right) \end{aligned} g(λ,ν)​=xinf​{f0​(x)+λT(Ax−b)+νT(Cx−d)}=−bTλ−dTν+xinf​{f0​(x)+(ATλ+CTν)Tx}=−bTλ−dTν−xsup​{−(ATλ+CTν)Tx−f0​(x)}=−bTλ−dTν−f0∗​(−ATλ−CTν)​

其中,dom⁡g={(λ,ν)∣−(ATλ+CTν)∈dom⁡f0∗}\operatorname{dom} g=\left\{(\boldsymbol{\lambda}, \boldsymbol{\nu}) \mid-\left(\mathbf{A}^{\mathrm{T}} \boldsymbol{\lambda}+\mathbf{C}^{\mathrm{T}} \boldsymbol{\nu}\right) \in \operatorname{dom} f_0^*\right\}domg={(λ,ν)∣−(ATλ+CTν)∈domf0∗​}。

例如,最大熵问题:
max⁡{∑i=1nxilog⁡1xi}≡min⁡{f0(x)≜∑i=1nxilog⁡xi}s.t. x∈R+n,1nTx=1s.t. x∈R+n,1nTx=1\begin{aligned} &\max \left\{\sum_{i=1}^n x_i \log \frac{1}{x_i}\right\} \equiv \min \left\{f_0(\mathbf{x}) \triangleq \sum_{i=1}^n x_i \log x_i\right\}\\ &\text { s.t. } \mathbf{x} \in \mathbb{R}_{+}^n, \mathbf{1}_n^{\mathrm{T}} \mathbf{x}=1 \quad \text { s.t. } \mathbf{x} \in \mathbb{R}_{+}^n, \mathbf{1}_n^{\mathrm{T}} \mathbf{x}=1 \end{aligned} ​max{i=1∑n​xi​logxi​1​}≡min{f0​(x)≜i=1∑n​xi​logxi​} s.t. x∈R+n​,1nT​x=1 s.t. x∈R+n​,1nT​x=1​

由上面常见凸函数的共轭函数有:
f0∗(y)=sup⁡x∈R+n{yTx−f0(x)}=∑i=1nsup⁡xi∈R+{yixi−xilog⁡xi}=∑i=1neyi−1\begin{aligned} f_0^*(\mathbf{y}) &=\sup _{\mathbf{x} \in \mathbb{R}_{+}^n}\left\{\mathbf{y}^{\mathrm{T}} \mathbf{x}-f_0(\mathbf{x})\right\} \\ &=\sum_{i=1}^n \sup _{x_i \in \mathbb{R}_{+}}\left\{y_i x_i-x_i \log x_i\right\}=\sum_{i=1}^n \mathrm{e}^{y_i-1} \end{aligned} f0∗​(y)​=x∈R+n​sup​{yTx−f0​(x)}=i=1∑n​xi​∈R+​sup​{yi​xi​−xi​logxi​}=i=1∑n​eyi​−1​
其中,dom⁡f0∗=Rn\operatorname{dom} f_0^*=\mathbb{R}^ndomf0∗​=Rn。令:A=−In,b=0,C=1nT\mathbf{A}=-\mathbf{I}_n, \mathbf{b}=\mathbf{0}, \mathbf{C}=1_n^{\mathrm{T}}A=−In​,b=0,C=1nT​,则有:

g(λ,ν)=−ν−f0∗(λ−1nν)=−ν−∑i=1neλi−ν−1=−ν−e−ν−1∑i=1neλi\begin{aligned} g(\boldsymbol{\lambda}, \nu) &=-\nu-f_0^*\left(\boldsymbol{\lambda}-\mathbf{1}_n \nu\right) \\ &=-\nu-\sum_{i=1}^n \mathrm{e}^{\lambda_i-\nu-1}=-\nu-\mathrm{e}^{-\nu-1} \sum_{i=1}^n \mathrm{e}^{\lambda_i} \end{aligned} g(λ,ν)​=−ν−f0∗​(λ−1n​ν)=−ν−i=1∑n​eλi​−ν−1=−ν−e−ν−1i=1∑n​eλi​​

总结优化问题(不一定为凸)的Lagrange对偶函数可以很容易地通过共轭函数得到。

优化问题-Lagrange函数和共轭函数相关推荐

  1. Lagrange对偶函数和共轭函数

    1. 共轭函数   定义: 函数f:Rn→Rf:\mathrm{R}^{n} \rightarrow \mathrm{R}f:Rn→R的共轭函数f∗f^{*}f∗为:f∗(y)=sup⁡x∈domf( ...

  2. 递归循环一个无限极数组_理解递归、尾调用优化和蹦床函数优化

    想要理解递归,您必须先理解递归.开个玩笑罢了, 递归 是一种编程技巧,它可以让函数在不使用 for 或 while 的情况下,使用一个调用自身的函数来实现循环. 例子 1:整数总和 例如,假设我们想要 ...

  3. help efun matlab,Matlab优化工具箱在函数最值求解中的应用.pdf

    Matlab优化工具箱在函数最值求解中的应用.pdf 系 统 解 决 方 案 Matlab优化工具箱在函数最值求解中的应用 彭东海 (中山职业技术学院数学教研室,广 东 中山 528404) 摘 要 ...

  4. iOS 性能优化-启动优化、main函数之前优化-二进制重排

    一个app的启动时间,很大程度会影响用户的体验,所以能优化还是尽量优化的.之前我们已经探究过dyld加载的流程,启动流程分为main函数之前和main函数之后.这里主要做main函数之前的优化建议. ...

  5. scala tail recursive优化,复用函数栈

    在scala中如果一个函数在最后一步调用自己(必须完全调用自己,不能加其他额外运算子),那么在scala中会复用函数栈,这样递归调用就转化成了线性的调用,效率大大的提高.If a function c ...

  6. 【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )

    文章目录 一. libjpeg-turbo 函数库下载与解压 二. libjpeg-turbo 编译文档 三. 编译前环境准备 四. 安装 NASM 汇编工具 1. 下载 NASM 汇编工具 2. 拷 ...

  7. 数据库-优化-案例-count()函数的优化

    函数Count()的优化 需求:在一条SQL中同时查处2006年和2007年电影的数量 错误的方式: 语句: select count(release_year='2006' or release_y ...

  8. 数据库-优化-案例-max()函数优化

    函数Max()的优化 用途:查询最后支付时间-优化max()函数 语句: select max(payment_date) from payment; 执行计划: explain select max ...

  9. mysql count优化_MySQL count()函数及其优化

    很简单,就是为了统计记录数 由SELECT返回 为了理解这个函数,让我们祭出 employee_tbl 表 所有记录 统计行的总数 计算 Zara 的记录数 注意:由于 SQL 查询对大小写不敏感,所 ...

最新文章

  1. android 横竖屏限制如何配置
  2. Java 常用对象-Date类和Calender类
  3. ArcGIS中加载模块时dojo/domReady!和dojo/ready的区别
  4. Scala可变集合:Queue增加和移除元素
  5. 01_MyBatis EHCache集成及所需jar包,ehcache.xml配置文件参数配置及mapper中的参数配置
  6. docker删除none镜像_Docker容器相关命令
  7. LRN和Batch Norm
  8. PIE SDK主成分变换
  9. 【vue系列之二】详解vue-cli 2.0配置文件
  10. Redis使用单线程却快到飞起的原因
  11. 复盘模型_组织内如何进行经验萃取复盘
  12. 解决asp.net中使用FckEditor上传文件,中文名称乱码的问题
  13. 技术分享 | 如何在无人机设计中运用拓补优化技术?
  14. ipad 在线打代码 code-server
  15. JQuery fadeOut()函数与remove()函数合用时不生效的解决办法
  16. 陀螺产业区块链第九季 | 如何用区块链搭建营销激励模型?
  17. 最适合家用的洗地机哪个牌子好?家用洗地机品牌排行榜
  18. XINLINX VC707 的学习
  19. java中mysql分组查询_ES对应mysql的group by分组查询javaApi,多对多关系的分组查询...
  20. 大学应用计算机二级,大学计算机二级ps考试试题内容(3)

热门文章

  1. 浮点数与32位16进制互转(有代码)
  2. P2597 [ZJOI2012]灾难(支配树)
  3. 肖 sir_就业课__014mysql讲解
  4. 存储结构和磁盘划分(基于RedHat7)
  5. python中拆包解包用法详解
  6. 基于python的论文摘要怎么写_Django显示文章摘要需要如何写
  7. 基于MATLAB的烟雾火灾检测识别系统
  8. 安卓模拟器的使用--皇室战争免费快速成长之路
  9. 理性、抽丝剥茧地解决 Easypoi、poi 版本冲突问题,而不是无头苍蝇一样闷头百度、google 一顿搜
  10. 解决 CLion 出现中文乱码问题【亲测有效】