首页 > 其他分享 >反问题:迭代法

反问题:迭代法

时间:2024-03-27 18:14:44浏览次数:29  
标签:infty psi 迭代 equ 问题 right 迭代法 hat

反问题:迭代法

Date: 2024/03/27
Reference : Colton, D. & Kress, R. Inverse Acoustic and Electromagnetic Scattering Theory. vol. 93 (Springer International Publishing, Cham, 2019). p170-p180

使用迭代法求解反散射问题中的反障碍问题,主要想法是基于牛顿迭代。此节的主要内容为:

  • 牛顿迭代
  • 修正的牛顿迭代(有三种修正方法)

一、问题概述

反障碍问题考虑如下方程:

\[\mathcal{F}(r) = u_\infty \]

其中 \(u_\infty\) 是远场模式,\(r\) 是星型边界 \(\part D\) 的参数化函数,\(\mathcal{F}\) 是远场映射。

远场映射的性质在书中有许多讨论,重要的有以下两个:

[!IMPORTANT]

  1. 当入射波确定时,\(\mathcal{F}: C^1(\mathbb{S}^2) \rightarrow L^2(\mathbb{S}^2)\) 是连续的,Fréchet可微的,局部紧的。

  2. \(\mathcal{F}\)​​ 的Fréchet导数是单射且像空间稠。形式如下给出:

    \[\mathcal{F}'_rq =v_\infty \]

    其中 \(v_\infty\) 是如下外问题的解 \(v\) 的远场模式:

    \[\begin{cases} \Delta v + k^2 v = 0, & x\in \R^3 \backslash \bar{D} \\ v = -\nu \cdot \left( p_q \circ p_r^{-1} \right) \frac{\part u}{\part \nu}, & x\in \part D \end{cases} \]

从上面的性质中不难发现,\(\mathcal{F}\) 的计算实际是解Helmholtz正问题,\(\mathcal{F}\) 的Fréchet导数计算实际上是解两次正问题。

反障碍问题就是要在已知 \(u^i\) 和 \(u_\infty\) 的条件下,计算 \(r\)。

二、牛顿迭代

使用线性化技术,牛顿迭代考虑如下的线性方程:

\[\mathcal{F}(r)+\mathcal{F}'_rq = u_\infty \]

从上述方程中解出 \(q\) 后边界的迭代格式为 \(\tilde{r}=r+q\)。因此只需要解三次正问题即可完成一步迭代。数值实验上常使用有限维子空间的办法来取 \(r\) 和 \(q\),从而将问题转化为最小二乘。

显然上述迭代算法的计算消耗很大,因此有如下的改进,考虑声软边界,由惠更斯原理有如下的方程:

\[u^i = \int_{\part D} \frac{\part u}{\part \nu}(y) \varPhi(x,y) ds(y), \quad x \in \part D \tag{field equ.} \]

\[u_{\infty}(\hat{x}) = -\frac{1}{4\pi} \int_{\part D} \frac{\part u}{\part \nu}(y ) e^{-ik\hat{x}\cdot y} ds(y), \quad x \in \mathbb{S}^2 \tag{data equ.} \]

为符号方便,记 \(\varphi = -\frac{\part u}{\part \nu} ,x\in \part D\).

[!note]

field equ. 是弱病态的,data equ. 是严重病态的

在迭代中,使用其中一个方程求出 \(\varphi\),而后利用线性化第二个方程求出此时的 \(q\),最后利用 \(\tilde{r}=r+q\) 更新边界。

具体而言有以下三种改进方式

  • 第一种:利用 field equ. 求 \(\varphi\),线性化 data equ. 求 \(q\)​
  • 第二种:同时线性化 field equ. 和 data equ.,而后使用牛顿迭代求解
  • 第三种:利用 data equ. 求 \(\varphi\),线性化 field equ. 求 \(q\)

为方便后文讨论,将上面两个方程分别定义为算子形式,引入如下两个算子:

\[A(r, \psi)(\hat{x}):=\int_{\mathbb{S}^2} \Phi\left(p_r(\hat{x}), p_r(\hat{y})\right) \psi(\hat{y}) d s(\hat{y}), \quad \hat{x} \in \mathbb{S}^2 \]

\[A_{\infty}(r, \psi)(\hat{x}):=\frac{1}{4 \pi} \int_{\mathbb{S}^2} e^{-i k r(\hat{y}) \hat{x} \cdot \hat{y}} \psi(\hat{y}) d s(\hat{y}), \quad \hat{x} \in \mathbb{S}^2 \]

原方程变为:

\[A(r, \psi) = -u^i \circ p_r \]

\[A_\infty(r, \psi) = u_\infty \]

变量换为 \(\psi = J_r \varphi \circ p_r\) 其中 \(J_r = r\sqrt{r^2+ |\text{Grad}\ r|^2}\).

两算子用于线性化的Fréchet导数可以如下显式地给出:

\[\left(A^{\prime}(r, \psi) q\right)(\hat{x})=\int_{\mathbb{S}^2} \operatorname{grad}_x \Phi\left(p_r(\hat{x}), p_r(\hat{y})\right) \cdot\left[p_q(\hat{x})-p_q(\hat{y})\right] \psi(\hat{y}) d s(\hat{y}), \quad \hat{x} \in \mathbb{S}^2 \]

\[\left(A_{\infty}^{\prime}(r, \psi) q\right)(\hat{x})=-\frac{i k}{4 \pi} \int_{\mathbb{S}^2} e^{-i k r(\hat{y}) \hat{x} \cdot \hat{y}} \hat{x} \cdot \hat{y} q(\hat{y}) \psi(\hat{y}) d s(\hat{y}), \quad \hat{x} \in \mathbb{S}^2 \]

三、改进算法(一)

在给出 \(r,u^i,u_\infty\) 下求解 \(q\) 再使用 \(\tilde{r}=r+q\) 更新边界。

Step 1. 利用 \(A(r, \psi) = -u^i \circ p_r\) 求解 \(\psi\),实际上是解一个积分方程

Step 2. 从如下的线性方程中求解 \(q\):

\[A_\infty'(r,\psi)q = u_\infty - A_\infty(r,\psi) \]

实际上是解一个积分方程。这个积分方程是严重病态的,因此需要使用正则化方法 (如Tikhonov正则化)。

[!IMPORTANT]

这种算法同原本的牛顿法有如下关系。考虑此算法的解:

\[\mathcal{F}(r) = -A_\infty \left(r, [A(r,\cdot)]^{-1}(u^i\circ p_r) \right) \]

对其微分:

\[\begin{aligned} \mathcal{F}_r^{\prime} q= & -A_{\infty}^{\prime}\left(r,[A(r, \cdot)]^{-1}\left(u^i \circ p_r\right)\right) q \\ & +A_{\infty}\left(r,[A(r, \cdot)]^{-1} A^{\prime}\left(r,[A(r, \cdot)]^{-1}\left(u^i \circ p_r\right)\right) q\right) \\ & -A_{\infty}\left(r,[A(r, \cdot)]^{-1}\left(\operatorname{grad} u^i \circ p_r\right) \cdot p_q\right) . \end{aligned} \]

因此这种算法实际上是使用牛顿迭代中梯度的第一项,来替代完整的梯度计算,从而减少了计算量。数值实验结果表明其重建效果同完整的牛顿迭代差不多。

四、改进算法(二)

同时线性化 field equ. 和 data equ.,而后使用牛顿迭代求解。

将 \(\psi\) 的线性化方向设为 \(\chi\),\(r\) 的线性化方向设为 \(q\). 由于 field equ. 和 data equ. 都对 \(\psi\) 是线性的,因此这个所谓的线性化,或者说Fréchet导数就可以直接代入,从而得到如下的结果:

\[A^{\prime}(r, \psi) q+\left(\operatorname{grad} u^i \circ p_r\right) \cdot p_q+A(r, \chi)=-A(r, \psi)-u^i \circ p_r \]

\[A_{\infty}^{\prime}(r, \psi) q+A_{\infty}(q, \chi)=-A_{\infty}(r, \psi)+u_{\infty} \]

求解 \(\chi\) 和 \(q\) 的过程实际上是解一组积分方程组,由于第二个方程是严重病态的,因此需要对两个未知数同时进行正则化。

[!important]

从第一个方程中不难看出,在该改进算法下,每一步迭代过程中 \(A(r, \psi) = -u^i \circ p_r\) 均不成立。除非 \(\psi\) 恰满足此方程。这表明这个迭代算法同牛顿迭代有较大的差异。

因此可以基于此设计一个 \(\mathcal{F}(r) = u_\infty\) 的新的迭代方法,而非牛顿迭代 \(\mathcal{F}(r)+\mathcal{F}'_rq = u_\infty\) 变种。想法也很简单,就是求出 \(q\) 后,直接求解 field equ. \(A(r+q, \tilde{\psi}) = -u^i \circ (p_r+p_q)\) 得到下一步的 \(\tilde\psi\),而不需要求 \(\chi\) 再更新 \(\psi\).

五、改进算法(三)

第三种改进方法是先求解严重病态的 data equ. 再线性化 field equ. 求 \(q\)。这种方法事实上应该划分到分解法中,关于分解法可以参考p180~p199 或者后续的文章。

标签:infty,psi,迭代,equ,问题,right,迭代法,hat
From: https://www.cnblogs.com/zhang-js/p/18099927

相关文章

  • List中的add方法添加对象时出现重复的问题
    现象:用list存储User对象信息,当存储多个对象时,发现存储的数据都是一样的之前代码:Useruser=newUser();List<User>list=newArrayList<>();for(inti=0;i<5;i++){user.setName("Tom"+i);user.setAge("18"+i);user.setLocation("......
  • Sql server 2019 文件夹共享方式异地备份遇到的问题
    1、无法找到路径'\\192.168.66.50\share_domain\2、该作业失败。 无法确定所有者WIN-DOAR3JOEG2C\Administrator(拥有作业Mofang异地差异备份.Subplan_1)是否有服务器访问权限(原因:无法获取有关WindowsNT组/用户'WIN-DOAR3JOEG2C\Administrator'的信息,错误代码0x54......
  • `load_boston` has been removed from scikit-learn since version 1.2.问题的解决
    问题描述应该是scikit-learn版本的问题,导致boston这个东西不能在这里使用,就出现这个错误;问题解决我们先将****换成这些(已经在报错里面明确给出来了):data_url="http://lib.stat.cmu.edu/datasets/boston"raw_df=pd.read_csv(data_url,sep="\s+",skiprows=22,header=None......
  • module ‘tensorflow‘ has no attribute ‘placeholder‘问题的解决
    问题描述下载好tensorflow之后,就报错了~~~就显示tensorflow没有那个属性问题解决依据网上给出的答案,官网给出的解决方案是将importtensorflowastf换成:importtensorflow.compat.v1astftf.disable_v2_behavior()需要注意的是,在我们复制之后,它会提示有报错,不过没有......
  • pat mooc 浙江大学数据结构 01-复杂度1 最大子列和问题
    输入格式:输入第1行给出正整数K(≤100000);第2行给出K个整数,其间以空格分隔。输出格式:在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。输入样例:6-211-413-5-2输出样例:20#include<stdio.h>intmain(){ intk,n; intsum=0; intm......
  • 安全更新:关于Cybellum维护服务器问题的情况说明(CVE-2023-42419)
    “转载自CybellumTechnologiesLtd.”我们想通知我们的客户一个我们注意到的安全问题,作为我们对产品透明度和持续安全性的承诺。2023年6月21日,一位名叫Delikely的安全研究员向Cybellum的安全团队报告了一个问题,特别针对Cybellum软件的某个发行版。这个问题是在Cybellum的QCOW......
  • tab页切换导致echart图宽高仅100px问题
    页面切换导致echart图宽高仅100px问题,图表的宽度可能没有正确更新,导致显示不正确。为了解决这个问题,你需要确保在切换标签页时触发ECharts实例的resize方法,以便图表可以正确地调整到新的容器尺寸。//假设你已经有一个ECharts实例varmyChart=echarts.init(document.getEl......
  • Android Studio创建项目时,依赖下载失败的常见解决问题
    Failedtoresolve:androidx.compose.ui:ui-tooling在settings.gradle.kts中加入末尾处的仓库列表。并且确保*..\Gradle\repository\init.d*目录下无配置Repositorys仓库的初始化脚本文件,确保始终使用的是项目中的脚本文件。我就是因为init.d下有个gradle脚本文件,导致了迟迟下......
  • jQuery在请求返回前增加遮罩问题
    好久没有使用jquery了;做了个小工具没有前端东西突然要用到了;就想到了jquery;为了增加用户体验体验,增加了一个页面,增加了用户点击按钮后的响应遮罩的显示和隐藏; 增加div<divid="loading-mask"><divid="loading-spinner"></div></div>增加css#loading-mask......
  • elementui组件el-input 类型为number时,去掉上下箭头,并且解决输入中文后光标上移问题
    //去掉number输入框的上下箭头.def-input-numberinput::-webkit-outer-spin-button,.def-input-numberinput::-webkit-inner-spin-button{-webkit-appearance:none;}.def-input-numberinput[type="number"]{-moz-appearance:textfield;}//解决inputnumber框......