基于Crank-Nicolson方法的变系数抛物型偏微分方程求解器
项目介绍
本项目实现了一种基于Crank-Nicolson隐式差分格式的数值求解器,专门用于求解一维变系数抛物型偏微分方程:du/dt - a(t) × d²u/dx² = 0。该求解器能够处理随时间变化的扩散系数a(t),通过稳定的数值算法获得高精度的数值解。
功能特性
- 变系数处理:支持系数a随时间变化的动态调整,可配置常数、线性函数、指数函数等多种变化规律
- 隐式差分格式:采用Crank-Nicolson方法,具有二阶时间精度和无条件稳定性
- 高效求解:使用三对角矩阵算法(TDMA)快速求解线性方程组
- 灵活边界条件:支持Dirichlet和Neumann两类边界条件
- 完整可视化:提供数值解的空间分布随时间演化的动态显示
- 收敛性分析:内置网格收敛性检验和误差分析功能
使用方法
参数配置
- 空间离散参数:设置计算域[x_min, x_max]和空间步长dx
- 时间离散参数:定义模拟时间范围[t_start, t_end]和时间步长dt
- 系数设置:指定系数a的初始值及其随时间变化的函数形式
- 初始条件:定义初始时刻u(x,0)的空间分布函数
- 边界条件:配置左右边界的类型和具体数值
运行求解
执行主程序后,系统将自动完成:
- 计算区域离散化网格生成
- 变系数抛物方程数值求解
- 结果数据的保存与可视化
- 数值误差和收敛性分析
结果输出
- 数值解矩阵:包含所有时间步和空间点的完整解数据
- 系数记录:每个时间步对应的a(t)值
- 空间分布图:不同时刻数值解的对比显示
- 分析报告:数值解的精度和收敛特性评估
系统要求
- MATLAB R2018a或更高版本
- 推荐内存:4GB以上
- 磁盘空间:100MB可用空间
文件说明
主程序文件实现了该求解器的核心功能,包括计算参数的初始化和验证、空间与时间方向的网格划分、系数变化规律的函数定义、初始条件和边界条件的设置、Crank-Nicolson差分格式的矩阵构建、基于TDMA算法的线性方程组求解、数值解的数据存储与管理、结果的可视化展示以及数值误差分析和收敛性检验等完整求解流程。