三维空间的波动问题——泊松公式(婉转曲折,其妙无穷)

目录

简单分析

平均值方法

求解

泊松公式


简单分析

运用了平均值的思想,三维有x,y,z,我们做了一个平均值,就变成了一维的波动问题

这个思想以及方法非常关键

我们列出方程

\small \mu_{tt}-a^2 \nabla^2\mu=0

\small \mu(M,0)=\phi(M)

\small \mu_t(M,0)=\psi(M),M=(x,y,z)

\small -\infty < x,y,z <+\infty

无界意味着我们不考虑反射波的影响,我们要求的是\small \mu(M,t)

这个方向各向同性,x,y,z三个方向是等价的


平均值方法

场量在某一点,以\small M_0为秋心,\small r为半径,把球面上的值加起来,然后再除以总的面积,这个就是球面上u的平均值,我们再让\small r->0,就是球心的值

这种方法可以很好的处理各向同性的问题

\small \overline \mu(r,t)=\frac{1}{4 \pi r^2}\iint_{S_l^{M_0}}\mu(M,t)ds,我们让其趋于0,就得到球心的值

\small \mu(M,t)=\lim_{r->0}\frac{1}{4 \pi}\iint \mu(M,t)(\frac{ds}{r^2})=\lim_{r->0}\frac{1}{4 \pi}\iint \mu(M,t)d\Omega

这个球面平均实际就是对立体角的积分,最后实际上是对于一个立体角的一个平均,球极坐标有\small (r,\theta, \phi),对立体角的积分实际上是把\small \theta,\phi给积分掉了,我们可以联想到\small \int_{0}^{\pi} \int_0^{2 \pi} sin(\theta) d\theta d\phi=4 \pi

也就是总的立体角等于\small 4 \pi,对角度的积分实际是把这一部分积分掉

所以最后只剩下r的变量

在球极坐标里面,关系式

\small x-x_0=rsin(\theta)cos(\phi)

\small y-y_0=rsin(\theta)sin(\phi)

\small z-z_0=rcos(\theta)


求解

在泛定方程两边做球面平均,我们得到

\small \frac{1}{4 \pi}\iint_{S_l^{M_0}}\mu_{tt}d\Omega=\frac{a^2}{4 \pi}\iint_{S_l^{M_0}}\nabla^2 \mu d\Omega,对时间的二阶导数和球面上的积分是可以交换次序的

\small \frac{\partial^2 }{\partial t^2}[ \frac{1}{4 \pi}\iint_{S_l^{M_0}}\mu d\Omega]-a^2 \nabla^2[\frac{1}{4 \pi} \iint_{S_l^{M_0}}ud\Omega]=0

我们得到\small \frac{\partial^2 }{\partial t^2} \overline \mu (r,t)=a^2\nabla \overline \mu (r,t)

\small \nabla^2 \overline \mu (r,t)=\frac{1}{r}\frac{\partial^2 }{\partial t^2}(r \overline \mu)

进一步,我们得到

\small \frac{\partial^2 }{\partial t^2} \overline \mu (r,t)=\frac{a^2}{r}\frac{\partial^2 r \overline \mu}{\partial r^2},这个方程就变成

\small \frac{\partial^2 }{\partial t^2}(r \overline \mu)=a^2 \frac{\partial^2 }{\partial r^2}(r \overline \mu),我们可以做一个变量代换,令\small r\overline \mu=v(r,t)

我们可以得到\small v_{tt}-a^2v_{rr}=0

它的解:

\small f(\zeta,\eta)=f_1(\zeta)+f_2(\eta)

其中\small \zeta=r+at,\eta=r-at,我们可以得到

\small v (x,t) = f_1 (\zeta)+f_2 ( \eta)<-\frac{\partial^2 v}{\partial \zeta \partial \eta}=0

\small =f_1(r+at)+f_2(r-at)=r\overline \mu(r,t),前者是向球心汇聚的球面波,后者是向球心发散的球面波

但是这只是一个通解,我们还需要做一个变换

我们有一个边界条件,当\small r=0的时候,\small v|_{r=0}=0=> f_1(at)+f_2(-at)=0........1

\small \overline \mu=\frac{f_1(r+at)+f_2(r-at)-[f_1(at)+f_2(at)]]}{r-0}

\small r->0,t=t_0 => \mu(M_0,t_0)=\lim_{r->0}\frac{\Delta (f_1+f_2)}{\Delta r}={f_1}'(at)+{f_2}'(-at)

我们发现\small {f_1}'(at)={f_2}'(-at)从1号等式发现

\small \mu(M_0,t_0)=2{f_1}'(at_0)


泊松公式

我们对于\small f_1(r+at)+f_2(r-at)=r\overline \mu(r,t)两边求导,列出两个等式

\small \frac{\partial }{\partial r} r\overline \mu={f_1}'(r+at)+{f_2}'(r-at)=>r=at_0,t=0

\small \frac{1}{a}\frac{\partial }{\partial t} r\overline \mu={f_1}'(r+at)-{f_2}'(r-at)=>t=0,r=at_0

我们需要利用初始条件两者一相加得到

\small =\frac{\partial }{\partial r} r\overline \mu+\frac{1}{a} \frac{\partial }{\partial r} r\overline \mu |_{r=at_0}

我们再进行计算,就可以得到泊松公式

\small \mu(M,t)=\frac{1}{4 \pi a}[\frac{\partial }{\partial t} \iint_{S_{at}^{M}} \frac{\phi({M'})}{at}]d{S}'+\iint_{S_{at}^{M}} \frac{\psi({M'})}{at}]d{S}'

\small {M}'=({x}',{y}',{z}'),d{S}'=d{S}'_{M'}

\small {x}'=x+atsin(\theta)cos(\phi)

\small {y}'=y+atsin(\theta)sin(\phi)

\small {z}'=z+atcos(\theta)

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
求解三维波动方程涉及到偏微分方程的求解,在Python中可以使用一些数值方法进行近似求解。下面是一个简单的示例代码,使用有限差分法(finite difference method)求解三维波动方程: ```python import numpy as np import matplotlib.pyplot as plt # 定义网格参数 size_x = 100 # 空间网格点数 size_y = 100 size_z = 100 delta_x = 1.0 # 空间步长 delta_y = 1.0 delta_z = 1.0 delta_t = 0.01 # 时间步长 # 定义波动方程参数 c = 1.0 # 波速 t_max = 10.0 # 模拟总时间 # 初始化网格和初始条件 u = np.zeros((size_x, size_y, size_z)) u_new = np.zeros((size_x, size_y, size_z)) u[size_x//2, size_y//2, size_z//2] = 1.0 # 初始条件 u_new[size_x//2, size_y//2, size_z//2] = 1.0 # 迭代求解波动方程 t = 0.0 while t < t_max: for i in range(1, size_x-1): for j in range(1, size_y-1): for k in range(1, size_z-1): u_new[i, j, k] = 2*u[i, j, k] - u_new[i, j, k] + \ (c**2)*(delta_t**2)/(delta_x**2) * \ (u[i-1, j, k] + u[i+1, j, k] + \ u[i, j-1, k] + u[i, j+1, k] + \ u[i, j, k-1] + u[i, j, k+1] - \ 6*u[i, j, k]) u, u_new = u_new, u # 更新网格值 t += delta_t # 绘制结果 fig = plt.figure() ax = fig.gca(projection='3d') X, Y, Z = np.meshgrid(range(size_x), range(size_y), range(size_z)) ax.voxels(X, Y, Z, u) plt.show() ``` 上述代码使用了空间的有限差分法进行了近似求解,并通过matplotlib库绘制了结果。你可以根据自己的需求调整空间网格的大小、步长、波速、模拟总时间等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉月松心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值