当前位置: 首页 > news >正文

Python地震波逆问题解构算法复杂信号分析

🎯要点

🎯时域、时频域以及时间和频率相关联偏振特性分析三种算法 | 🎯时域波参数估计算法 | 🎯机器学习模型波形指纹分析算法 | 🎯色散曲线和频率相关波分析算法 | 🎯动态倾斜校正算法 | 🎯声学地震波像分析

📜Python,MATLAB和C/C++物理信号滤波合成检测模拟用例

📜Python和MATLAB数字信号波形和模型模拟

📜Python量化噪声卷积信号和傅里叶时频分析

📜C++数字化声音信号处理和数控振荡合成

📜Python嵌入式动态用户调制解调响应式射频信号

📜Python嵌入式片上系统逻辑电路物理信号处理

📜Arduino生物波反馈和环境检测外套

📜Python线性代数傅里叶分析和动态系统模拟分析之一

📜Python线性代数数字图像和小波分析之二

📜Python数值和符号算法计算及3D视图物理数学波形方程

📜MATLAB_ESP32有限脉冲响应FIR无限脉冲响应IIR滤波器

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python波场逆问题

在许多应用中,声波或电磁波被用来观察事物:水下声学、雷达、声纳、医学超声波、探地雷达、地震成像、全球地震学。在其中一些应用中,测量是被动的,我们记录调查对象发出的波,并试图推断其位置、大小等。在主动测量中,会产生波并记录对象的响应。

为了处理逆问题,我们必须首先了解正问题。在最基本的形式中,波动方程由下式给出
L [ c ] v ( t , x ) = q ( t , x ) ( 1 ) L[c] v(t, x)=q(t, x)\qquad(1) L[c]v(t,x)=q(t,x)(1)

L [ c ] = [ 1 c ( x ) 2 ∂ 2 ∂ t 2 − ∇ 2 ] L[c]=\left[\frac{1}{c(x)^2} \frac{\partial^2}{\partial t^2}-\nabla^2\right] L[c]=[c(x)21t222]
其中 v : R × R n → R v: R \times R ^n \rightarrow R v:R×RnR 表示波场, c : R n → R c: R ^n \rightarrow R c:RnR 是传播速度, q : R × R n → R q: R \times R ^n \rightarrow R q:R×RnR 是源术语。我们假设源在空间和时间上都有紧支持并且是平方可积的。

为了定义(1)的唯一解,我们需要提供边界和初始条件。在上面讨论的应用中,通常考虑无界域 ( x ∈ R n ) \left(x \in R ^n\right) (xRn) 和柯西初始条件 v ( 0 , x ) = 0 , ∂ v ∂ t ( 0 , x ) = 0 v(0, x)=0, \frac{\partial v}{\partial t }(0, x)=0 v(0,x)=0,tv(0,x)=0

在散射实验中,通常根据入射波场和散射波场重写波动方程 v = v i + v s v=v_i+v_s v=vi+vs 和散射势 u ( x ) = c ( x ) − 2 − c 0 − 2 u(x)=c(x)^{-2}- c_0^{-2} u(x)=c(x)2c02 :
L [ c 0 ] v i ( t , x ) = q ( t , x ) , L [ c 0 ] v s ( t , x ) = − u ( x ) ∂ 2 v ∂ t 2 ( t , x ) ( 2 ) L\left[c_0\right] v_i(t, x)=q(t, x), \quad L\left[c_0\right] v_s(t, x)=-u(x) \frac{\partial^2 v}{\partial t^2}(t, x)\qquad(2) L[c0]vi(t,x)=q(t,x),L[c0]vs(t,x)=u(x)t22v(t,x)(2)
在弱散射假设下,我们可以忽略 u u u v s v_s vs的相互作用,并将(2)中的 v v v替换为 v i v_i vi

测量结果通常被视为限制为 [ 0 , T ] × Δ [0, T] \times \Delta [0,T]×Δ 的(分散)波场,其中 Δ ⊂ R n \Delta \subset R ^n ΔRn 可以是流形或一组点。然后数据可以用 f ( t , r ) f(t,r) f(t,r)表示。在主动实验中,通常的做法是考虑对源项集合的测量。源可以是点源,在这种情况下 q ( t , x ) = w ( t ) δ ( x − s ) q(t, x)=w(t) \delta(x-s) q(t,x)=w(t)δ(xs) s ∈ Σ s \in \Sigma sΣ。或者,事件场 v i v_i vi 可以由 s ∈ Σ s \in \Sigma sΣ 给出和参数化。然后我们可以用 f ( t , s , r ) f(t, s, r) f(t,s,r) 表示数据,其中 s ∈ Σ 、 r ∈ Δ s \in \Sigma、r \in \Delta sΣrΔ t ∈ [ 0 , T ] t \in[0, T] t[0,T]

基于这个基本设置,我们将讨论三个可能的逆问题:

  • 逆源问题:从已知(且恒定) c ( x ) ≡ c 0 c(x) \equiv c_0 c(x)c0 的测量中恢复源 q q q
  • 逆散射:假设 c 0 c_0 c0 已知,从多个(已知)源的散射场测量中恢复散射势 u ( x ) u(x) u(x)
  • 波形断层扫描:从多个(已知)源的总波场测量中恢复 c ( x ) c(x) c(x)

下面您将找到一些实践中出现的逆问题的典型示例。

  • 地震定位:由源项 w ( t ) q ( x ) w(t) q(x) w(t)q(x) 描述的地震由多个地震仪在位置 Δ = { r k } k = 1 n 处记录 \Delta=\left\{r_k\right\}_{k=1}^n 处记录 Δ={rk}k=1n处记录。目标是恢复 q q q 以确定地震位置。
  • 被动声纳:使用数组 Δ = { x 0 + r p ∣ r ∈ [ − h , h ] } \Delta=\left\{x_0+r p \mid r \in[-h, h]\right\} Δ={x0+rpr[h,h]} 记录从不明目标发出的声波,其中 $p \in S ^2 $ 表示数组的方向, h h h 表示其宽度。目标是恢复源项 w ( t ) q ( x ) w(t) q(x) w(t)q(x) 以确定源的起源和性质。
  • 雷达成像:入射平面波,由方向 s ∈ Σ ⊂ S 2 s \in \Sigma \subset S ^2 sΣS2​ 参数化,被发送到介质中,并由阵列记录其反射响应。目标是恢复散射势。
  • 全波形反演:在勘探地震学中,目标是从表面总波场的测量中恢复 c c c Σ = Δ = { x ∣ n ⋅ x = 0 } \Sigma=\Delta=\{x \mid n \cdot x=0\} Σ=Δ={xnx=0}
  • 超声断层扫描:目标是康复 𝑐 来自物体周围的源和接收器的总波场。

我们研究逆源问题的一个变体,其中 q ( t , x ) = δ ( t ) u ( x ) q(t, x)=\delta(t) u(x) q(t,x)=δ(t)u(x) u u u Ω ⊂ R n \Omega \subset R ^n ΩRn 上得到紧凑支持。常量 c c c 的前向运算符由下式给出
K u ( t , x ) = ∫ Ω u ( x ′ ) g ( t , x − x ′ ) d x ′ K u(t, x)=\int_{\Omega} u\left(x^{\prime}\right) g\left(t, x-x^{\prime}\right) d x^{\prime} Ku(t,x)=Ωu(x)g(t,xx)dx
在半径为 ρ \rho ρ 的球体上进行测量。解决逆问题的一种流行技术是反向传播,它基于将前向算子的伴随应用于数据。在这种情况下,伴随运算符由下式给出:
K ∗ f ( x ) = ∫ Δ ∫ 0 T g ( t ′ , x ′ − x ) f ( t ′ , x ′ ) d x ′ d t ′ K^* f(x)=\int_{\Delta} \int_0^T g\left(t^{\prime}, x^{\prime}-x\right) f\left(t^{\prime}, x^{\prime}\right) d x^{\prime} d t^{\prime} Kf(x)=Δ0Tg(t,xx)f(t,x)dxdt
我们看到 p = K ∗ f p=K^* f p=Kf 可以通过求解下式得到
L [ c ] w ( t , x ) = ∫ Δ f ( t , x ′ ) δ ( x − x ′ ) d x ′ L[c] w(t, x)=\int_{\Delta} f\left(t, x^{\prime}\right) \delta\left(x-x^{\prime}\right) d x^{\prime} L[c]w(t,x)=Δf(t,x)δ(xx)dx
使用时间反转格林函数并在 t = 0 t=0 t=0 处求值,即 p ( x ) = w ( 0 , x ) p(x)=w(0, x) p(x)=w(0,x)

为了了解其原理,我们研究普通运算符 K ∗ K K^* K KK。在时域傅立叶域中,对于 c = 1 c=1 c=1,运算符变为
f ^ ( ω , x ) = ∫ Ω u ( x ′ ) exp ⁡ ( ı ω ∣ x − x ′ ∣ ) ∣ x − x ′ ∣ d x ′ \widehat{f}(\omega, x)=\int_{\Omega} u\left(x^{\prime}\right) \frac{\exp \left(\imath \omega\left|x-x^{\prime}\right|\right)}{\left|x-x^{\prime}\right|} d x^{\prime} f (ω,x)=Ωu(x)xxexp(ωxx)dx

u ( x ) = ∬ Δ f ^ ( ω , x ′ ) exp ⁡ ( − ı ω ∣ x ′ − x ∣ ) ∣ x ′ − x ∣ d x ′ d ω u(x)=\iint_{\Delta} \widehat{f}\left(\omega, x^{\prime}\right) \frac{\exp \left(-\imath \omega\left|x^{\prime}-x\right|\right)}{\left|x^{\prime}-x\right|} d x^{\prime} d \omega u(x)=Δf (ω,x)xxexp(ωxx)dxdω
于是,
K ∗ K u ( x ) = ∬ Δ ∫ Ω f ( x ′ ) exp ⁡ ( ı ω ∣ x ′ ′ − x ′ ∣ ) ∣ x ′ ′ − x ′ ∣ exp ⁡ ( − ı ω ∣ x ′ ′ − x ∣ ) ∣ x ′ ′ − x ∣ d x ′ d x ′ ′ d ω K^* K u(x)=\iint_{\Delta} \int_{\Omega} f\left(x^{\prime}\right) \frac{\exp \left(\imath \omega\left|x^{\prime \prime}-x^{\prime}\right|\right)}{\left|x^{\prime \prime}-x^{\prime}\right|} \frac{\exp \left(-\imath \omega\left|x^{\prime \prime}-x\right|\right)}{\left|x^{\prime \prime}-x\right|} d x^{\prime} d x^{\prime \prime} d \omega KKu(x)=ΔΩf(x)x′′xexp(ωx′′x)x′′xexp(ωx′′x)dxdx′′dω
对于 ∣ x ′ ′ ∣ ≫ ∣ x ∣ \left|x^{\prime \prime}\right| \gg|x| x′′x 我们可以将其近似为 ∣ x ′ ′ − x ∣ ≈ ∣ x ′ ′ ∣ + x ⋅ x ′ ′ / ∣ x ′ ′ ∣ \left|x^{\prime \prime}-x\right| \approx\left|x^{\prime \prime}\right|+x \cdot x^{\prime \prime} /\left|x^{\prime \prime}\right| x′′xx′′+xx′′/x′′ 同样对于 ∣ x ′ ′ − x ′ ∣ \left |x^{\prime \prime}-x^{\prime}\right| x′′x。这称为远场近似。引入 ξ ′ ′ = x ′ ′ / ∣ x ′ ′ ∣ = x ′ ′ / ρ \xi^{\prime \prime}=x^{\prime \prime} /\left|x^{\prime \prime}\right|=x^{\prime \prime} / \rho ξ′′=x′′/x′′=x′′/ρ单位球面,我们发现
K ∗ K u ( x ) = ρ ∫ Ω u ( x ′ ) ∬ exp ⁡ ( w ξ ′ ′ ⋅ ( x ′ − x ) ) d ξ ′ ′ d ω d x ′ K^* K u(x)=\rho \int_{\Omega} u\left(x^{\prime}\right) \iint \exp \left(w \xi^{\prime \prime} \cdot\left(x^{\prime}-x\right)\right) d \xi^{\prime \prime} d \omega d x^{\prime} KKu(x)=ρΩu(x)exp(wξ′′(xx))dξ′′dωdx
此式:
k ( x − x ′ ) = ∬ exp ⁡ ( u ω ξ ′ ′ ⋅ ( x ′ − x ) ) d ξ ′ ′ d ω k\left(x-x^{\prime}\right)=\iint \exp \left(u \omega \xi^{\prime \prime} \cdot\left(x^{\prime}-x\right)\right) d \xi^{\prime \prime} d \omega k(xx)=exp(uωξ′′(xx))dξ′′dω

有时称为点扩散函数。

这种过滤也可以通过乘以 ∣ ξ ∣ 2 |\xi|^2 ξ2 在傅立叶域中实现。一个例子如下所示。

import numpy as np
import matplotlib.pyplot as plt
import scipy.sparse as sp
from scipy.ndimage import laplacedef solve(q,c,dt,dx,T=1.0,L=1.0,n=1):gamma = dt*c/dxnt = int(T/dt + 1)nx = int(2*L/dx + 2)u = np.zeros((nx**n,nt))for k in range(1,nt-1):u[:,k+1] = A@u[:,k] + L@u[:,k] + B@u[:,k-1] + (dx**2)*C@q[:,k]return udef getMatrices(gamma,nx,n):l = (gamma**2)*np.ones((3,nx))l[1,:] = -2*(gamma**2)l[1,0] = -gammal[2,0] = gammal[0,nx-2] = gammal[1,nx-1] = -gammaif n == 1:a = 2*np.ones(nx)a[0] = 1a[nx-1] = 1b = -np.ones(nx)b[0] = 0b[nx-1] = 0c = (gamma)**2*np.ones(nx)c[0] = 0c[nx-1] = 0L = sp.diags(l,[-1, 0, 1],shape=(nx,nx))else:a = 2*np.ones((nx,nx))a[0,:] = 1a[nx-1,:] = 1a[:,0] = 1a[:,nx-1] = 1a.resize(nx**2)b = -np.ones((nx,nx))b[0,:] = 0b[nx-1,:] = 0b[:,0] = 0b[:,nx-1] = 0b.resize(nx**2)c = (gamma)**2*np.ones((nx,nx))c[0,:] = 0c[nx-1,:] = 0c[:,0] = 0c[:,nx-1] = 0c.resize(nx**2)L = sp.kron(sp.diags(l,[-1, 0, 1],shape=(nx,nx)),sp.eye(nx)) + sp.kron(sp.eye(nx),sp.diags(l,[-1, 0, 1],shape=(nx,nx)))return A,B,C,L
L = 1.0
T = 1.0
dx = 1e-2
dt = .5e-2
nt = int(T/dt + 1)
nx = int(2*L/dx + 2)
c = 1u = np.zeros((nx,nx))
u[nx//2 - 10:nx//2+10,nx//2 - 10:nx//2+10] = 1
q = np.zeros((nx*nx,nt))
q[:,1] = u.flatten()w_forward = solve(q,c,dt,dx,T=T,L=L,n=2)theta = np.linspace(0,2*np.pi,20,endpoint=False)
xs = 0.8*np.cos(theta)
ys = 0.8*np.sin(theta)
I = np.ravel_multi_index(np.array([[xs/dx + nx//2],[ys//dx + nx//2]],dtype=np.int), (nx,nx))
d = w_forward[I,:]r = np.zeros((nx*nx,nt))
r[I,:] = d
r = np.flip(r,axis=1)w_adjoint = solve(r,c,dt,dx,T=T,L=L,n=2)fig, ax = plt.subplots(nrows=2, ncols=3, figsize=(8, 5), sharey=True)
plt.gray()ax[0,0].plot(xs,ys,'r*')
ax[0,0].imshow(w_forward[:,2].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[0,0].set_title('t = 0')
ax[0,1].plot(xs,ys,'r*')
ax[0,1].imshow(w_forward[:,101].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[0,1].set_title('t = 0.5')
ax[0,2].plot(xs,ys,'r*')
ax[0,2].imshow(w_forward[:,200].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[0,2].set_title('t = 1')ax[1,0].plot(xs,ys,'r*')
ax[1,0].imshow(w_adjoint[:,200].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[1,1].plot(xs,ys,'r*')
ax[1,1].imshow(w_adjoint[:,101].reshape((nx,nx)), extent=(-L,L,-L,L))
ax[1,2].plot(xs,ys,'r*')
ax[1,2].imshow(w_adjoint[:,2].reshape((nx,nx)), extent=(-L,L,-L,L))plt.show()

👉参阅&更新:计算思维 | 亚图跨际

http://www.lryc.cn/news/394586.html

相关文章:

  • C语言 -- 深入理解指针(二)
  • HTTP协议详解
  • 一年时间业绩增长2倍,茅台保健酒业公司在川销售的“三板斧”
  • 土豆炒肉做法
  • VPS拨号服务器:独享的高效与安全
  • 网络安全设备——防火墙
  • Redis 管道技术
  • 使用vue3-treeselect问题
  • 每日直播分享车载知识:硬件在环、UDS诊断、OTA升级、TBOX测试、CANoe、ECU刷写、CAN一致性测试:物理层、数据链路层等
  • flex布局---子元素未设置高度,默认与父元素同高---侧轴方向的拉伸
  • 资源分享—2021版三调符号库
  • 解决selenium手动下载驱动问题
  • 使用fifo IP核,给fifo写数据,当检测到ALMOST_EMPTY时,为什么不能立即赋值
  • 【Python123题库】#汽车迷 #编写函数输出自除数 #身份证号基本信息
  • 普通人怎么利用GPT赚钱之SEO优化内容
  • LeetCode热题100刷题8:54. 螺旋矩阵、73. 矩阵置零、48. 旋转图像
  • 景联文科技打造高质量图文推理问答数据集,赋能大语言模型提升推理能力
  • 用网络编程完成windows和linux跨平台之间的通信(服务器)
  • 力扣3148.矩阵中的最大得分
  • 解决数据库PGSQL,在Mybatis中创建临时表报错TODO IDENTIFIER,连接池用的Druid。更换最新版本Druid仍然报错解决
  • 【WPF】桌面程序开发之xaml页面基础布局方式详解
  • 第十五章 Nest Pipe(内置及自定义)
  • 实战篇(八):使用Processing创建动态图形:诡异八爪鱼
  • 大模型成为软件和数据工程师
  • 【鸿蒙学习笔记】页面布局
  • GIT 使用相关技巧记录
  • 1-认识网络爬虫
  • ROS2使用Python开发动作通信
  • Bug记录:【com.fasterxml.jackson.databind.exc.InvalidDefinitionException】
  • Mongodb索引的删除