从 麦克斯韦方程组 到 波动方程 再到 二维波动方程

从 麦克斯韦方程组 到 波动方程 再到 二维波动方程

flyfish

从麦克斯韦方程组,推导出了电场和磁场的波动方程。这两个波动方程描述了电磁场的传播,并且它们的形式与标准的波动方程一致。波动方程表明电场和磁场都以波的形式传播,传播速度 c c c 由以下关系确定:
c = 1 μ 0 ϵ 0 c = \frac{1}{\sqrt{\mu_0 \epsilon_0}} c=μ0ϵ0 1这个速度 c c c 恰好是光速,这证明了光是一种电磁波。

麦克斯韦方程组在真空中的形式

  1. 高斯定律(电场)
    ∇ ⋅ E = ρ ϵ 0 \nabla \cdot \mathbf{E} = \frac{\rho}{\epsilon_0} E=ϵ0ρ

  2. 高斯定律(磁场)
    ∇ ⋅ B = 0 \nabla \cdot \mathbf{B} = 0 B=0

  3. 法拉第电磁感应定律
    ∇ × E = − ∂ B ∂ t \nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t} ×E=tB

  4. 安培-麦克斯韦方程
    ∇ × B = μ 0 J + μ 0 ϵ 0 ∂ E ∂ t \nabla \times \mathbf{B} = \mu_0 \mathbf{J} + \mu_0 \epsilon_0 \frac{\partial \mathbf{E}}{\partial t} ×B=μ0J+μ0ϵ0tE
    在真空中,电荷密度 ρ \rho ρ 和电流密度 J \mathbf{J} J 都为零,因此方程简化为:

  5. ∇ ⋅ E = 0 \nabla \cdot \mathbf{E} = 0 E=0

  6. ∇ ⋅ B = 0 \nabla \cdot \mathbf{B} = 0 B=0

  7. ∇ × E = − ∂ B ∂ t \nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t} ×E=tB

  8. ∇ × B = μ 0 ϵ 0 ∂ E ∂ t \nabla \times \mathbf{B} = \mu_0 \epsilon_0 \frac{\partial \mathbf{E}}{\partial t} ×B=μ0ϵ0tE

推导电场的波动方程

首先对法拉第电磁感应定律取旋度:
∇ × ( ∇ × E ) = ∇ × ( − ∂ B ∂ t ) \nabla \times (\nabla \times \mathbf{E}) = \nabla \times \left( -\frac{\partial \mathbf{B}}{\partial t} \right) ×(×E)=×(tB)利用向量分析中的恒等式 ∇ × ( ∇ × E ) = ∇ ( ∇ ⋅ E ) − ∇ 2 E \nabla \times (\nabla \times \mathbf{E}) = \nabla (\nabla \cdot \mathbf{E}) - \nabla^2 \mathbf{E} ×(×E)=(E)2E,并结合高斯定律(电场) ∇ ⋅ E = 0 \nabla \cdot \mathbf{E} = 0 E=0,得到:
∇ × ( ∇ × E ) = − ∇ 2 E \nabla \times (\nabla \times \mathbf{E}) = -\nabla^2 \mathbf{E} ×(×E)=2E所以:
− ∇ 2 E = ∇ × ( − ∂ B ∂ t ) -\nabla^2 \mathbf{E} = \nabla \times \left( -\frac{\partial \mathbf{B}}{\partial t} \right) 2E=×(tB)
∇ 2 E = ∂ ∂ t ( ∇ × B ) \nabla^2 \mathbf{E} = \frac{\partial}{\partial t} (\nabla \times \mathbf{B}) 2E=t(×B)再利用安培-麦克斯韦方程中的 ∇ × B = μ 0 ϵ 0 ∂ E ∂ t \nabla \times \mathbf{B} = \mu_0 \epsilon_0 \frac{\partial \mathbf{E}}{\partial t} ×B=μ0ϵ0tE,得到:
∇ 2 E = ∂ ∂ t ( μ 0 ϵ 0 ∂ E ∂ t ) \nabla^2 \mathbf{E} = \frac{\partial}{\partial t} \left( \mu_0 \epsilon_0 \frac{\partial \mathbf{E}}{\partial t} \right) 2E=t(μ0ϵ0tE)
∇ 2 E = μ 0 ϵ 0 ∂ 2 E ∂ t 2 \nabla^2 \mathbf{E} = \mu_0 \epsilon_0 \frac{\partial^2 \mathbf{E}}{\partial t^2} 2E=μ0ϵ0t22E这就是电场的波动方程:
∇ 2 E − μ 0 ϵ 0 ∂ 2 E ∂ t 2 = 0 \nabla^2 \mathbf{E} - \mu_0 \epsilon_0 \frac{\partial^2 \mathbf{E}}{\partial t^2} = 0 2Eμ0ϵ0t22E=0

推导磁场的波动方程

对安培-麦克斯韦方程取旋度:
∇ × ( ∇ × B ) = ∇ × ( μ 0 ϵ 0 ∂ E ∂ t ) \nabla \times (\nabla \times \mathbf{B}) = \nabla \times \left( \mu_0 \epsilon_0 \frac{\partial \mathbf{E}}{\partial t} \right) ×(×B)=×(μ0ϵ0tE)同样利用向量恒等式 ∇ × ( ∇ × B ) = ∇ ( ∇ ⋅ B ) − ∇ 2 B \nabla \times (\nabla \times \mathbf{B}) = \nabla (\nabla \cdot \mathbf{B}) - \nabla^2 \mathbf{B} ×(×B)=(B)2B 和高斯定律(磁场) ∇ ⋅ B = 0 \nabla \cdot \mathbf{B} = 0 B=0,得到:
∇ × ( ∇ × B ) = − ∇ 2 B \nabla \times (\nabla \times \mathbf{B}) = -\nabla^2 \mathbf{B} ×(×B)=2B所以:
− ∇ 2 B = ∇ × ( μ 0 ϵ 0 ∂ E ∂ t ) -\nabla^2 \mathbf{B} = \nabla \times \left( \mu_0 \epsilon_0 \frac{\partial \mathbf{E}}{\partial t} \right) 2B=×(μ0ϵ0tE)
∇ 2 B = μ 0 ϵ 0 ∂ ∂ t ( ∇ × E ) \nabla^2 \mathbf{B} = \mu_0 \epsilon_0 \frac{\partial}{\partial t} (\nabla \times \mathbf{E}) 2B=μ0ϵ0t(×E)再利用法拉第电磁感应定律 ∇ × E = − ∂ B ∂ t \nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t} ×E=tB,得到:
∇ 2 B = μ 0 ϵ 0 ∂ ∂ t ( − ∂ B ∂ t ) \nabla^2 \mathbf{B} = \mu_0 \epsilon_0 \frac{\partial}{\partial t} \left( -\frac{\partial \mathbf{B}}{\partial t} \right) 2B=μ0ϵ0t(tB)
∇ 2 B = μ 0 ϵ 0 ∂ 2 B ∂ t 2 \nabla^2 \mathbf{B} = \mu_0 \epsilon_0 \frac{\partial^2 \mathbf{B}}{\partial t^2} 2B=μ0ϵ0t22B这就是磁场的波动方程:
∇ 2 B − μ 0 ϵ 0 ∂ 2 B ∂ t 2 = 0 \nabla^2 \mathbf{B} - \mu_0 \epsilon_0 \frac{\partial^2 \mathbf{B}}{\partial t^2} = 0 2Bμ0ϵ0t22B=0

从标准波动方程到二维波动方程

从标准波动方程推导出二维波动方程。先从三维标准波动方程出发,逐步简化到二维波动方程。
标准波动方程在三维空间中的一般形式为:
1 v 2 ∂ 2 ψ ∂ t 2 = ∇ 2 ψ \frac{1}{v^2} \frac{\partial^2 \psi}{\partial t^2} = \nabla^2 \psi v21t22ψ=2ψ
其中:

  • ψ ( x , y , z , t ) \psi(x, y, z, t) ψ(x,y,z,t) 是描述波动的函数。

  • v v v 是波速。

  • ∇ 2 ψ \nabla^2 \psi 2ψ 是拉普拉斯算子,定义为:
    ∇ 2 ψ = ∂ 2 ψ ∂ x 2 + ∂ 2 ψ ∂ y 2 + ∂ 2 ψ ∂ z 2 \nabla^2 \psi = \frac{\partial^2 \psi}{\partial x^2} + \frac{\partial^2 \psi}{\partial y^2} + \frac{\partial^2 \psi}{\partial z^2} 2ψ=x22ψ+y22ψ+z22ψ

推导二维波动方程

为了得到二维波动方程,需要假设波动在 z z z 方向上没有变化。这意味着:
∂ ψ ∂ z = 0 \frac{\partial \psi}{\partial z} = 0 zψ=0
从而: ∂ 2 ψ ∂ z 2 = 0 \frac{\partial^2 \psi}{\partial z^2} = 0 z22ψ=0因此,拉普拉斯算子简化为:
∇ 2 ψ = ∂ 2 ψ ∂ x 2 + ∂ 2 ψ ∂ y 2 \nabla^2 \psi = \frac{\partial^2 \psi}{\partial x^2} + \frac{\partial^2 \psi}{\partial y^2} 2ψ=x22ψ+y22ψ将这个简化的拉普拉斯算子代入标准波动方程中,得到:
1 v 2 ∂ 2 ψ ∂ t 2 = ∂ 2 ψ ∂ x 2 + ∂ 2 ψ ∂ y 2 \frac{1}{v^2} \frac{\partial^2 \psi}{\partial t^2} = \frac{\partial^2 \psi}{\partial x^2} + \frac{\partial^2 \psi}{\partial y^2} v21t22ψ=x22ψ+y22ψ通常会把 ψ \psi ψ 改写为 u u u 以表示二维波动函数,且将波速 v v v 改写为 c c c ,于是方程变为:
1 c 2 ∂ 2 u ∂ t 2 = ∂ 2 u ∂ x 2 + ∂ 2 u ∂ y 2 \frac{1}{c^2} \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} c21t22u=x22u+y22u为了使方程更加简洁,将 c 2 c^2 c2 移到右边:
∂ 2 u ∂ t 2 = c 2 ( ∂ 2 u ∂ x 2 + ∂ 2 u ∂ y 2 ) \frac{\partial^2 u}{\partial t^2} = c^2 \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right) t22u=c2(x22u+y22u)
这就是二维波动方程。

把步骤简化就是

  1. 从标准波动方程出发:
    1 v 2 ∂ 2 ψ ∂ t 2 = ∇ 2 ψ \frac{1}{v^2} \frac{\partial^2 \psi}{\partial t^2} = \nabla^2 \psi v21t22ψ=2ψ

  2. 将拉普拉斯算子展开为三维形式:
    ∇ 2 ψ = ∂ 2 ψ ∂ x 2 + ∂ 2 ψ ∂ y 2 + ∂ 2 ψ ∂ z 2 \nabla^2 \psi = \frac{\partial^2 \psi}{\partial x^2} + \frac{\partial^2 \psi}{\partial y^2} + \frac{\partial^2 \psi}{\partial z^2} 2ψ=x22ψ+y22ψ+z22ψ

  3. 假设波动在 z z z 方向上没有变化,即 ∂ ψ ∂ z = 0 \frac{\partial \psi}{\partial z} = 0 zψ=0 ,于是 ∂ 2 ψ ∂ z 2 = 0 \frac{\partial^2 \psi}{\partial z^2} = 0 z22ψ=0

  4. 简化拉普拉斯算子:
    ∇ 2 ψ = ∂ 2 ψ ∂ x 2 + ∂ 2 ψ ∂ y 2 \nabla^2 \psi = \frac{\partial^2 \psi}{\partial x^2} + \frac{\partial^2 \psi}{\partial y^2} 2ψ=x22ψ+y22ψ

  5. 将简化后的拉普拉斯算子代入标准波动方程:
    1 v 2 ∂ 2 ψ ∂ t 2 = ∂ 2 ψ ∂ x 2 + ∂ 2 ψ ∂ y 2 \frac{1}{v^2} \frac{\partial^2 \psi}{\partial t^2} = \frac{\partial^2 \psi}{\partial x^2} + \frac{\partial^2 \psi}{\partial y^2} v21t22ψ=x22ψ+y22ψ

  6. 改写为二维波动函数 u u u 和波速 c c c ,得到:
    1 c 2 ∂ 2 u ∂ t 2 = ∂ 2 u ∂ x 2 + ∂ 2 u ∂ y 2 \frac{1}{c^2} \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} c21t22u=x22u+y22u

  7. 最终整理得到二维波动方程:
    ∂ 2 u ∂ t 2 = c 2 ( ∂ 2 u ∂ x 2 + ∂ 2 u ∂ y 2 ) \frac{\partial^2 u}{\partial t^2} = c^2 \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right) t22u=c2(x22u+y22u)

这样就从标准波动方程推导出了二维波动方程。

### 回答1: 二维麦克斯韦方程组CNDG-FDTD方法的数值解误差可以通过与解析解的比较来计算。但是,通常情况下并没有解析解,因此可以通过逐渐减小网格尺寸来估计误差,并计算收敛精度阶数。 具体实现步骤如下: 1. 定义二维麦克斯韦方程组CNDG-FDTD方法的离散格式,包括时间步长、空间步长等参数。 2. 初始化电磁场分量,包括电场、磁场、电荷密度、电流密度等。 3. 在时间和空间上进行循环迭代,更新电场和磁场分量的值。 4. 在每个时间步长结束时,将数值解与解析解进行比较,计算误差。 5. 逐渐减小网格尺寸,重复步骤2-4,计算不同网格尺寸下的误差。 6. 根据误差和网格尺寸的关系,计算收敛精度阶数。 下面是一个简单的二维麦克斯韦方程组CNDG-FDTD方法的数值解误差计算示例(假设已经定义好了离散格式): ```matlab % 初始化电磁场分量 Ex = zeros(nx, ny); Ey = zeros(nx, ny); Hz = zeros(nx, ny); % 时间和空间循环迭代 for n = 1:Nt % 更新电场和磁场分量 Ex(:,2:end-1) = Ex(:,2:end-1) + Cexy(:,2:end-1).*(Hz(:,2:end-1)-Hz(:,1:end-2)); Ey(2:end-1,:) = Ey(2:end-1,:) - Cexy(2:end-1,:).*(Hz(2:end-1,:)-Hz(1:end-2,:)); Hz(2:end-1,2:end-1) = Hz(2:end-1,2:end-1) + Chzxy.*(Ex(2:end-1,3:end)-Ex(2:end-1,2:end-1)+Ey(3:end,2:end-1)-Ey(2:end-1,2:end-1)); % 计算误差 if mod(n,10) == 0 exact_Ex = sin(pi*X).*cos(pi*Y).*cos(dt*n); error_Ex = max(max(abs(Ex-exact_Ex))); fprintf('误差为 %f \n',error_Ex); end end % 计算收敛精度阶数 h = dx; error = [0.005,0.00125,0.000313,0.000078]; h_list = [h,h/2,h/4,h/8]; p = polyfit(log(h_list),log(error),1); order = -p(1); fprintf('收敛精度阶数为 %f\n',order); ``` 其中,`Nx`和`Ny`分别是网格的大小,`Nt`是时间步数,`Cexy`和`Chzxy`是系数矩阵,`dx`和`dt`分别是空间和时间步长,`X`和`Y`是网格坐标,`exact_Ex`是解析解,`error_Ex`是数值解和解析解的误差,`error`是不同网格尺寸下的误差,`h_list`是不同网格尺寸列表,`p`是误差和网格尺寸的线性拟合结果,`order`是收敛精度阶数。 注意,以上代码仅为示例,实际情况下需要根据具体的问题进行修改和调整。 ### 回答2: 二维麦克斯韦方程组(电磁场方程)是描述电磁场的方程组,包括麦克斯韦方程和电流密度方程。CNDG-FDTD(Conformal Node-Domain Galerkin Finite-Difference Time-Domain)方法是求解这些方程的一种数值解法。 在使用CNDG-FDTD方法求解二维麦克斯韦方程组时,存在数值解误差。这种误差主要由两部分组成:离散误差和边界误差。 离散误差是指由于将连续的方程离散化为离散的差分方程所引入的误差。离散误差的大小和离散化的步长有关,步长越小,离散误差越小。通常情况下,可以通过减小网格大小来减小离散误差。 边界误差是指由于边界条件在数值计算中引入的误差。边界误差的大小和边界条件的准确性以及边界处理算法有关。为了减小边界误差,可以采用吸收边界条件、PML(Perfectly Matched Layer)边界条件等方法。 为了显示CNDG-FDTD方法的收敛精度阶数,可以通过计算不同网格大小下的数值解,并与准确解进行比较。收敛精度阶数即误差与网格大小之间的关系。一般情况下,收敛精度阶数应该是二阶(即误差与网格大小的平方成正比),但在实际计算中,由于离散误差和边界误差的影响,可能会出现低于二阶的情况。 使用Matlab可以编写程序,根据不同的网格大小,求解二维麦克斯韦方程组,计算数值解与准确解的误差,并绘制误差与网格大小的关系曲线。通过拟合曲线的斜率,可以得到收敛精度阶数。一般情况下,拟合曲线的斜率越接近2,收敛精度越高。根据计算结果,可以评估CNDG-FDTD方法在求解二维麦克斯韦方程组时的数值解误差和收敛精度阶数。 ### 回答3: 二维麦克斯韦方程组的CNDG-FDTD方法是一种常用的数值求解电磁场问题的方法。在该方法中,我们通过将二维空间离散成网格,并且在每个网格点处建立麦克斯韦方程的差分格式来近似求解电磁场。该方法的数值解误差主要包括两部分:截断误差和离散误差。 截断误差是指由于在连续的方程上进行离散处理而引入的误差。在CNDG-FDTD方法中,我们通过将麦克斯韦方程差分得到的有限差分方程是有截断误差的。这种误差的大小与网格的尺寸以及时间步长有关。一般来说,我们可以通过减小网格尺寸和时间步长来减小截断误差。 离散误差是指由于数值方法的近似性质而引入的误差。CNDG-FDTD方法是一种二阶精度的数值方法,也就是说,它的离散误差的阶数为2。离散误差的大小与网格尺寸有关,但与时间步长无关。因此,为了提高数值解的精度,我们只需要减小网格尺寸即可。 在matlab中,我们可以通过比较数值解和解析解的差异来评估数值解的误差,并计算收敛精度阶数。首先,我们需要得到解析解,可以通过理论分析或者使用其他高精度方法得到。然后,我们将数值解与解析解进行比较,计算差值的范数来评估误差。最后,通过改变网格尺寸,我们可以计算出不同网格尺寸下的误差,并利用这些数据来计算收敛精度阶数。 总之,二维麦克斯韦方程组CNDG-FDTD方法的数值解误差主要包括截断误差和离散误差,其中离散误差的阶数为2。我们可以利用matlab来计算数值解的误差,并通过改变网格尺寸来计算收敛精度阶数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

西笑生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值