logo
0
0
WeChat Login
Chaser_Sindy<13868992+Chaser_Sindy@user.noreply.gitee.com>
修正。

MT方程组数值求解项目

项目概述

本项目实现了多种数值方法求解Massive-Thirring (MT) 方程组:

i(u_t + u_x) + v + |v|^2 u = 0 i(v_t - v_x) + u + |u|^2 v = 0

这组方程在非线性光学和可积系统理论中有重要应用。项目中实现了多种空间和时间离散方法,并对各方法的数值精度进行了对比分析。

文件结构说明

主要求解器文件

  • tight-differential.py: 使用紧差分格式离散空间导数,结合Crank-Nicolson方法处理时间项,实现四阶空间精度和二阶时间精度
  • forward.py: 使用向前欧拉法的显式求解器,采用一阶上风格式处理空间导数
  • forward-space.py: 改进的空间中心差分实现,边界处特殊处理
  • forward-time1.py: 二阶时间中心差分格式,显式求解
  • forward-time2.py: 改进的时间中心差分格式,处理了周期边界条件
  • backward.py: 隐式后向欧拉法求解器,使用迭代方法处理非线性项

工具文件

  • tools/config.py: 配置参数,包括空间区间、时间区间、步长设置等
  • tools/initial_conditions.py: 初始条件和精确解定义
  • tools/error_utils.py: 误差计算和处理工具
  • tools/visualization.py: 结果可视化函数
  • tools/common_imports.py: 公共导入模块
  • plot_exact_solutions.py: 精确解可视化程序

使用方法

  1. 修改 tools/config.py 设置参数(空间区间长度L、时间区间长度T、空间步长dx、时间步长dt等)
  2. 运行对应求解器:
    python tight-differential.py # 运行紧差分格式求解器
  3. 结果会自动显示数值解和误差的三维图像以及二维截面图

数值方法说明

  • 紧差分格式: 四阶空间精度,截断误差为 O(h⁴)
  • Crank-Nicolson方法: 二阶时间精度,截断误差为 O(Δt²)
  • 组合方法精度: 总截断误差为 O(Δt² + h⁴)

精确解说明

项目使用了两种精确解:

  1. 类型1:u₀ = -4exp(x)/(4i+exp(2x)), v₀ = -4iexp(x)/(-4i+exp(2x))
  2. 类型2:u₁ = 2exp(it)/(i+2x), v₁ = 2exp(it)/(-i+2x)

可以通过 plot_exact_solutions.py 查看精确解的时空演化特性。