基于有限差分法的矩形域 Poisson 方程数值求解器
项目介绍
本项目是一个基于 MATLAB 环境开发的数值计算工具,专门用于求解二维矩形区域内的椭圆型偏微分方程——Poisson 方程。该工具利用二阶中心有限差分法(FDM)将连续的偏微分方程转化为离散的线性代数方程组,并通过高效的矩阵计算手段获取数值解。此求解器能够模拟物理学中的多种稳态场分布问题,如静电势分布、稳态温度场分布以及流体力学中的流函数计算。
功能特性
- 自定义几何与网格参数:支持灵活设置矩形定义域的边界范围(x_min, x_max, y_min, y_max)以及在两个维度上的网格离散化数量(Nx, Ny)。
- 二阶中心差分算子:内部节点采用经典的五点差分格式,确保空间离散具有二阶精度。
- 灵活的边界条件支持:支持对矩形区域的四条边独立设置 Dirichlet 边界值。
- 稀疏矩阵优化:利用稀疏矩阵存储技术(Sparse Matrix)构建系数矩阵,大幅减少内存占用并提升大尺度数值问题的求解效率。
- 全面结果分析:程序自动计算并输出数值解的最大值、最小值及其在空间中的具体坐标位置。
- 双维度可视化:提供三维表面分布图与二维等值线云图的双重视觉呈现方式。
实现逻辑与算法细节
本项目通过以下核心步骤实现 Poisson 方程的数值求解:
- 网格剖分与坐标生成
程序首先根据预设的范围和网格数,利用线性插值生成 x 轴和 y 轴的坐标向量,并通过网格矩阵生成函数建立二维空间坐标系。计算得出空间步长 dx 和 dy,作为有限差分格式的基础参数。
- 源项与边界条件定义
定义一个匿名函数作为方程右端的源项函数 f(x, y)。同时,定义四个边界函数,分别对应 y 的上下界和 x 的左右界,用于后续填充边界点的约束值。
- 离散化算子构造
采用五点差分格式对 Laplacian 算子进行离散。对于内部节点 (i, j),其代数方程构造为:
[u(i+1, j) - 2u(i, j) + u(i-1, j)] / dx^2 + [u(i, j+1) - 2u(i, j) + u(i, j-1)] / dy^2 = f(i, j)
通过二维索引至一维索引的映射关系 k = i + (j-1)*Nx,将所有网格点排列成线性方程组 Ax = B 的形式。
- 矩阵组装与边界处理
程序遍历所有网格点。若判定为边界点,则在系数矩阵 A 的对角线上设为 1,并在右端项向量 B 中填入对应的边界值;若为内部点,则根据五点差分格式填充 A 的五个对应位置上的系数,并令 B 的对应位置等于该点处的源项函数值。
- 线性方程组求解
利用 MATLAB 的反斜杠()运算符针对生成的稀疏矩阵进行求解。该运算符会自动识别稀疏属性并采用优化的直接法(如 LU 分解)进行高效运算。
- 数据重组与后处理
得到一维解向量后,通过矩阵重塑操作将其还原为与网格坐标一致的二维矩阵。随后提取数值特征并计算其在实际物理坐标系下的位置信息。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 硬件要求:具备基础运算能力的通用计算机,内存大小视网格划分的细密程度而定(在常规网格下内存占用极低)。
使用方法
- 打开 MATLAB 软件。
- 将程序代码载入工作环境。
- 直接运行主函数。程序将依次执行参数初试化、矩阵构造、方程求解、控制台结果打印及图形生成。
- 用户可在代码的参数设置区自行调整网格密度、区域大小或源项函数表达式,以观察不同物理情景下的场分布变化。
结果分析与可视化说明
程序运行结束后,将展示两个可视化窗口:
- 数值解三维分布图:通过三维彩色曲面展示势场的高度分布,采用插值渲染以获得平滑的视觉效果,并叠加轻量级网格线增强空间感。
- 数值解等值线云图:提供俯视视角,通过色彩填充和带有标签的等值线清晰展示势场的梯度变化与数值分布。
- 文本输出:命令行窗口将实时显示计算状态、网格规模以及数值解的极值点信息。