本发明专利技术提出了一种数学模型数值计算程序的验证方法,包括以下步骤:1)确定程序求解的控制方程;2)确定离散方法的理论收敛阶;3)确定数学模型的所有分支程序;4)确定虚构解;5)将虚构解输入控制方程的右端形成源项;6)将源项加入原控制方程的右端,得到控制方程的数值解;7)判断数值解和虚构解的值是否一致;8)进行网格细化获得不同网格上的误差,并用数值解计算实际收敛阶;9)若实际收敛阶与理论收敛阶一致,则完成当前测试。本发明专利技术提出了一种数学模型数值计算程序的验证方法,从逆向思维的观点出发构造出一组能满足程序验证要求的解析解,从程序实现精度阶来对程序进行验证,简化了程序测试,提供了大量的解析解。
【技术实现步骤摘要】
本专利技术涉及一种用于有数学模型的数值计算程序的正确性验证方法,特别是用于 求解偏微分方程的大型程序的正确性验证。
技术介绍
微分方程特别是非线性偏微分方程,由于数学目前发展水平的限制,一般来讲其 解析解很难得到。这就对其数值求解程序的验证带来很大的不便。长期以来,对这些程序 的考核主要有以下几种方法高精度解方法或解析解方法;专家判断方法;进行程序与程 序运行结果的对比的方法。后两种方法是建立可信度的方法,但它们不能代替严格的程序 验证,同时由于高精度解有限,或难以简单表达,而且在很多情况下解析解只有在某些假设 下才存在,这些假设往往使得方程中的某些项缺省,使得验证没有普遍意义。
技术实现思路
为了解决
技术介绍
中所存在的技术问题,本专利技术提出了一种数学模型数值计算程 序的验证方法,从逆向思维的观点出发构造出一组能满足程序验证要求的解析解,从程序 实现精度阶来对程序进行验证,简化了程序测试,提供了大量的解析解。本专利技术的技术解决方案是,其特殊之处 在于所述方法包括以下步骤1)确定程序求解的控制方程,假设该控制方程的边界条件;2)确定步骤1)中控制方程的离散方法的理论收敛阶;3)确定待测试的数学模型的所有分支程序;并根据边界条件判断控制方程是否 适定分支程序,若适定,则进行步骤4);4)确定控制方程的虚构解;5)将虚构解输入控制方程的右端形成源项;6)将源项加入原控制方程的右端,并完成计算程序的输入,得到控制方程的数值 解;7)判断数值解和虚构解的值是否一致,若一致,则进行步骤8);8)进行网格细化来获得不同网格上的误差,并利用数值解计算控制方程的实际收 敛阶;9)将实际收敛阶和理论收敛阶进行对比,若实际收敛阶与理论收敛阶一致,则完 成当前测试。上述步骤7)中若数值解与虚构解不一致,则进行步骤10)查错并改正错误,查到 错误并进行改正后,则返回步骤7)。上述步骤9)若实际收敛阶和理论收敛阶不一致,则进行步骤10)查错并改正错 误,查到错误并进行改正后,则返回步骤7)。上述步骤9)之后还包括步骤11)判断是否需要确定新的虚构解,若是,则返回步3骤4)继续。上述步骤1)中控制方程的边界条件包括可压或不可压、有粘或无粘。上述步骤8)中网格细化的具体方式是对结构网格整数倍进行加密,对非结构网 格对每个三角形单元的各边中点连线进行剖分细化。上述步骤10)中实际收敛阶和理论收敛阶不一致的原因包括测试公式或建立的 测试存在的错误、计算精度阶在给定的时间、位置上存在错误、计算误差度量或实际精度存 在错误或者收敛不完全。本方法的优点虚构解方法作为一种新的程序验证方法,它具有精确解方法等同 的优点,具有很强的生命力,能严格的测试程序时间空间离散的正确性、边界条件、程序的 编写和所做的一些坐标变换。换句话说,影响实际精度阶计算的地方都经过了测试。本方 法实现起来比较简单,虚构解方法的最大优点在于简化了程序测试,提供了大量的解析解, 能够避免网格收敛性测试方法中Richardson外推的不可靠性。具体实施方式参见附图说明图1,本专利技术提出了,包括以下步骤1)确定程序求解的控制方程,假设该控制方程的边界条件;2)确定步骤1)中控制方程的离散方法的理论收敛阶;3)确定待测试的数学模型的所有分支程序;并根据边界条件判断控制方程是否 适定分支程序,若适定,则进行步骤4);4)确定控制方程的虚构解;5)将虚构解输入控制方程的右端形成源项;6)将源项加入原控制方程的右端并完成计算程序的输入,得到控制方程的数值 解;7)判断数值解和虚构解的值是否一致,若一致,则进行步骤8);若不一致,则进行 步骤10)查错并改正错误;若找到错误并改正后,返回步骤7)继续进行;8)进行网格细化来获得不同网格上的误差,并利用数值解计算控制方程的实际收 敛阶;网格细化的具体方式是对结构网格整数倍进行加密,对非结构网格对每个三角形 单元的各边中点连线进行剖分细化;9)将实际收敛阶和理论收敛阶进行对比,若实际收敛阶等于理论收敛阶,则程序 完成,若实际收敛阶与理论收敛阶不一致,则进行步骤10);10)进行查错并改正处理,实际收敛阶和理论收敛阶不一致的原因包括测试公 式或建立的测试存在的错误、计算精度阶在给定的时间、位置上存在错误、计算误差度量或 实际精度存在错误或者收敛不完全;11)判断是否重新选择新的虚构解,若是,返回步骤4)进行;当所有验证通过,则 程度结束。以一维Burger’ s方程为例,来说明该方法的原理。对一维 Burger,s 方程^n ^ ι——+ — (-U2) = 0 dt dx 2^n ^ ιLu = — + — (-U2)dt dx 2可选取虚构解ue = ex+t源项f = ex+t+e2(x+t) 为了保证源项在程序中实现的正确性,可以借助符号处理软件Mathemat i ca/ maple等,它可以直接输出Fortran语言形式的程序代码。 对边界条件的修改,主要依据边界的类型,对于一般边界条件(Dirichlet边 界,Neumann边界,Robin边界等)而言,边界条件用边界算子作用于虚构解即可。如对 Dirichlet 边界μ|3Ω = g(u),应修改为μ|3Ω = g(ue)。权利要求1.,其特征在于所述方法包括以下步骤1)确定程序求解的控制方程,假设该控制方程的边界条件;2)确定步骤1)中控制方程的离散方法的理论收敛阶;3)确定待测试的数学模型的所有分支程序;并根据边界条件判断控制方程是否适定 分支程序,若适定,则进行步骤4);4)确定控制方程的虚构解;5)将虚构解输入控制方程的右端形成源项;6)将源项加入原控制方程的右端,并完成计算程序的输入,得到控制方程的数值解;7)判断数值解和虚构解的值是否一致,若一致,则进行步骤8);8)进行网格细化来获得不同网格上的误差,并利用数值解计算控制方程的实际收敛阶;9)将实际收敛阶和理论收敛阶进行对比,若实际收敛阶与理论收敛阶一致,则完成当 前测试。2.根据权利要求1所述的数学模型数值计算程序的验证方法,其特征在于所述步骤7)中若数值解与虚构解不一致,则进行步骤10)查错并改正错误,查到错误并进行改正后, 则返回步骤7)。3.根据权利要求2所述的数学模型数值计算程序的验证方法,其特征在于所述步骤 9)若实际收敛阶和理论收敛阶不一致,则进行步骤10)查错并改正错误,查到错误并进行 改正后,则返回步骤7)。4.根据权利要求3所述的数学模型数值计算程序的验证方法,其特征在于所述步骤9)之后还包括步骤11)判断是否需要确定新的虚构解,若是,则返回步骤4)继续。5.根据权利要求1或2或3或4所述的数学模型数值计算程序的验证方法,其特征在 于所述步骤1)中控制方程的边界条件包括可压或不可压、有粘或无粘。6.根据权利要求5所述的数学模型数值计算程序的验证方法,其特征在于所述步骤8)中网格细化的具体方式是对结构网格整数倍进行加密,对非结构网格对每个三角形单 元的各边中点连线进行剖分细化。7.根据权利要求6所述的数学模型数值计算程序的验证方法,其特征在于所述步骤10)中实际收敛阶和理论收敛阶不一致的原因包括测试公式或建立的测试存在的错误、 计算精度阶在给定的时间、位置上存在错误、计算误差度量或实际精度存在错本文档来自技高网...
【技术保护点】
一种数学模型数值计算程序的验证方法,其特征在于:所述方法包括以下步骤:1)确定程序求解的控制方程,假设该控制方程的边界条件;2)确定步骤1)中控制方程的离散方法的理论收敛阶;3)确定待测试的数学模型的所有分支程序;并根据边界条件判断控制方程是否适定分支程序,若适定,则进行步骤4);4)确定控制方程的虚构解;5)将虚构解输入控制方程的右端形成源项;6)将源项加入原控制方程的右端,并完成计算程序的输入,得到控制方程的数值解;7)判断数值解和虚构解的值是否一致,若一致,则进行步骤8);8)进行网格细化来获得不同网格上的误差,并利用数值解计算控制方程的实际收敛阶;9)将实际收敛阶和理论收敛阶进行对比,若实际收敛阶与理论收敛阶一致,则完成当前测试。
【技术特征摘要】
【专利技术属性】
技术研发人员:杨振虎,梁益华,周磊,
申请(专利权)人:中国航空工业集团公司第六三一研究所,
类型:发明
国别省市:87[中国|西安]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。