本项目实现了多种数值方法求解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: 精确解可视化程序
- 修改
tools/config.py 设置参数(空间区间长度L、时间区间长度T、空间步长dx、时间步长dt等)
- 运行对应求解器:
python tight-differential.py # 运行紧差分格式求解器
- 结果会自动显示数值解和误差的三维图像以及二维截面图
- 紧差分格式: 四阶空间精度,截断误差为 O(h⁴)
- Crank-Nicolson方法: 二阶时间精度,截断误差为 O(Δt²)
- 组合方法精度: 总截断误差为 O(Δt² + h⁴)
项目使用了两种精确解:
- 类型1:u₀ = -4exp(x)/(4i+exp(2x)), v₀ = -4iexp(x)/(-4i+exp(2x))
- 类型2:u₁ = 2exp(it)/(i+2x), v₁ = 2exp(it)/(-i+2x)
可以通过 plot_exact_solutions.py 查看精确解的时空演化特性。