
间断Galerkin法求解一维标量守恒律的MATLAB程序核心框架包含主文件与功能模块,通过参数初始化、空间离散、时间迭代和误差计算实现数值求解。
主文件是程序入口,负责全局参数设置与模块调用:
get_GLP.m生成Gauss-Legendre积分点坐标与权重,用于数值积分。例如,NumGLP=5时,输出5个积分点及其权重,确保空间离散的高精度。
init_data.m根据问题设定初始条件u(x,0)=sin(x),在求解域[0,2π]内生成初始解向量,为后续L2投影提供输入。
L2_Pro.m通过L2投影将初始条件映射到分片多项式空间。具体步骤包括:
构造局部质量矩阵;
求解线性方程组,得到投影后的初值系数。
RK3.m采用三阶Runge-Kutta格式进行时间迭代,公式为:[un + Delta t cdot L_h(u^n), quadun + frac{1}{4}u{(1)}), quadun + frac{2}{3}u{(2)})]其中Lh为空间离散算子。
calculate_L2_Error.m计算数值解与真解u(x,t)=sin(x−t)的L2误差,公式为:[text{Error} = sqrt{frac{1}{2pi}int_02 dx}]通过数值积分近似计算该误差。
计算Δt;
若t+Δt>tend则终止,否则更新t;
调用RK3迭代更新数值解;
完整代码可参考GitHub仓库(github.com/L1ssandra/Bi),适用于一维标量守恒律问题的间断Galerkin法实现。
