Vector.h 是向量类,包含生成向量及各种操作符重载
Template.h 是各种表达式模板的集合,包含必要的向量加减乘法操作符重载。
Matrix.h 是AX=b中,关键A数组生成的类,这里我用了数组压缩技术,即把带状数组A压缩,使程序执行更有效率。
cgexpr.cpp是Main函数,包括使用三种时间差分即 Explicit,Implicit 和 CrankNicolson。
运行程序时需要在Command line里按如下格式输入10个指令:
cgexpr hx hy tend tao a iterations eps residual.txt result.txt
其中cgexpr是主函数文件名,hx,hy,是有限差分对应的x,y大小,tend是时间长度,tao是时间差分对应的ht大小,a是使用哪种时间差分格式:0是Explicit,0.5是CrankNicolson,1是implicit.iterations 是一个时间段里循环的最大次数,eps是你设定的误差。residual.txt 和 result.txt 分别是误差和最后结果输出。
这个程序实现的偏微分方程是:
@u/@t= (delta)u
你可以根据你需要计算的偏微分方程,修改Matrix.h中对应的m,n,t的表达式即可。具体表达式需根据你的方程推出。
1