常见临近点算子的求解

本文将利用线性代数的知识推导出常见临近点算子的解,具体包括:

  • 投影算子
  • 一范数
  • 二次多项式
  • 核范数

临近点算子的标准形式

p r o x λ f ( v ) = arg ⁡ min ⁡ x ( f ( x ) + ( 1 / 2 λ ) ∥ x − v ∥ 2 2 ) = arg ⁡ min ⁡ x J ( x ) prox_{\lambda f}(v)=\arg\min_x\left(f(x)+(1/2\lambda)\|x-v\|_2^2\right)=\arg\min_xJ(x) proxλf(v)=argxmin(f(x)+(1/2λ)xv22)=argxminJ(x)

投影算子

f = I C f=I_C f=IC为凸集 C C C上的示性函数,则:
p r o x λ I C ( v ) = Π C ( v ) = arg ⁡ min ⁡ x ∈ C ∥ x − v ∥ 2 prox_{\lambda I_C}(v)=\Pi_C(v)=\arg\min_{x\in C}\|x-v\|_2 proxλIC(v)=ΠC(v)=argxCminxv2
即解为凸集 C C C上与点 v v v距离最小的点(投影点)。
示性函数的定义为
I C ( x ) = { 0 , x ∈ C + ∞ , x ∉ C I_C(x)=\left\{ \begin{aligned} 0 &, x\in C\\ +\infty&, x\notin C \end{aligned}\right. IC(x)={0+,xC,x/C
由示性函数的定义可知, x x x必然在 C C C的内部,示性函数的临近点算子是显然的。

二次函数

f ( x ) = ( 1 / 2 ) x T P x + q T x + r f(x)=(1/2)x^TPx+q^Tx+r f(x)=(1/2)xTPx+qTx+r
p r o x λ f ( v ) = ( I + λ P ) − 1 ( v − λ q ) prox_{\lambda f}(v)=(I+\lambda P)^{-1}(v-\lambda q) proxλf(v)=(I+λP)1(vλq)
二次函数是可微的,因此可以先求偏导数,然后利用最优化条件将偏导数置零。
∇ x J ( x ) = P x + q + 1 / λ ( x − v ) = 0 \nabla_x J(x)=Px+q+1/\lambda (x-v)=0 xJ(x)=Px+q+1/λ(xv)=0
整理后得到:
( I + λ P ) x = v − λ q (I+\lambda P)x=v-\lambda q (I+λP)x=vλq
两边求逆即可。

一范数

f = ∥ ⋅ ∥ 1 f=\|\cdot\|_1 f=1
p r o x λ f ( v ) = ( v − λ ) + − ( − v − λ ) + = { v i − λ , v i ≥ λ 0 , ∣ v i ∣ ≤ λ v i + λ , v i ≤ − λ prox_{\lambda f}(v)=(v-\lambda)_+-(-v-\lambda)_+= \left\{ \begin{aligned} v_i-\lambda &,v_i\ge\lambda \\ 0&, |v_i|\le\lambda \\ v_i+\lambda &,v_i\le-\lambda \end{aligned}\right. proxλf(v)=(vλ)+(vλ)+=viλ0vi+λ,viλ,viλ,viλ
由于一范数具有可分性,因此可以将原始的向量优化问题转换为标量优化问题,直接将 x x x表示标量 x i x_i xi v v v表示 v i v_i vi,得到:
J ( x ) = ∣ x ∣ + ( 1 / 2 λ ) ( x − v ) 2 J(x)=|x|+(1/2\lambda)(x-v)^2 J(x)=x+(1/2λ)(xv)2
此时可以通过讨论 x ≥ 0 , x &lt; 0 x\ge0, x&lt;0 x0,x<0来化为简单的二次函数优化问题。

核范数

核范数在矩阵 X X X上定义,为所有奇异值绝对值的和,即奇异值组成的向量的一范数。
∥ X ∥ ∗ = ∑ i ∣ λ i ∣ \|X\|_*=\sum_i |\lambda_i| X=iλi
关于核范数的临近点算子的优化目标为:
J ( X ) = ∥ X ∥ ∗ + ( 1 / 2 λ ) ∥ X − V ∥ F 2 J(X)=\|X\|_*+(1/2\lambda)\|X-V\|_F^2 J(X)=X+(1/2λ)XVF2
解为:
p r o x λ ∥ ⋅ ∥ ∗ = V d i a g ( p r o x λ f ( σ s ( A ) ) ) U prox_{\lambda \|\cdot\|_*}=Vdiag(prox_{\lambda f}(\sigma_s(A)))U proxλ=Vdiag(proxλf(σs(A)))U
其中 U σ s V U\sigma_sV UσsV A A A的SVD分解。

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
求解KDV方程是一个经典的非线性偏微分方程问题,可以使用算子分裂方法进行求解算子分裂方法将原方程拆分成多个部分,每个部分都可以使用容易求解的方法进行求解,然后将它们组合起来得到原方程的解。 KDV方程的形式如下: $$\frac{\partial u}{\partial t} + 6u\frac{\partial u}{\partial x} + \frac{\partial^3u}{\partial x^3} = 0$$ 使用算子分裂方法,我们将上式拆分成两个部分: $$\frac{\partial u}{\partial t} + 6u\frac{\partial u}{\partial x} = 0$$ $$\frac{\partial u}{\partial t} + \frac{\partial^3u}{\partial x^3} = 0$$ 对于第一个部分,我们使用迎风格式进行求解,迎风格式的离散形式为: $$u_i^{n+1} = u_i^n - \frac{\Delta t}{\Delta x}(u_i^n - u_{i-1}^n)u_i^n$$ 对于第二个部分,我们使用Crank-Nicolson格式进行求解,Crank-Nicolson格式的离散形式为: $$\frac{u_i^{n+1} - u_i^n}{\Delta t} + \frac{1}{2}\left(\frac{\partial^3u}{\partial x^3}\right)_i^{n+1/2} + \frac{1}{2}\left(\frac{\partial^3u}{\partial x^3}\right)_i^n = 0$$ 其中,$\left(\frac{\partial^3u}{\partial x^3}\right)_i^{n+1/2}$可以用以下公式表示: $$\left(\frac{\partial^3u}{\partial x^3}\right)_i^{n+1/2} = \frac{u_{i+1}^{n+1} - 2u_i^{n+1} + u_{i-1}^{n+1} - u_{i+1}^n + 2u_i^n - u_{i-1}^n}{(\Delta x)^3}$$ 对于边界条件,我们可以采用周期性边界条件,即$u_0^n = u_N^n$和$u_{N+1}^n = u_1^n$。 综上所述,我们可以使用以下步骤求解KDV方程: 1. 初始化网格和时间步长 2. 根据迎风格式求解第一个部分,得到$u_i^{n+1/2}$ 3. 根据$u_i^{n+1/2}$,使用Crank-Nicolson格式求解第二个部分,得到$u_i^{n+1}$ 4. 将时间步长$n$增加1,重复步骤2-3直到达到所需的时间 注意,算子分裂方法有时可能会引入数值误差,因此需要适当选择网格和时间步长以确保精度和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值