数学建模过程

当今所建立的数学模型的一个特点是复杂,这种复杂来自建模客体本身的复杂。于是模型日益精细,需要同时借助来自不同知识领域的若干理论,也需要运用现代计算方法与计算技术来获取和分析模拟结果。对于复杂客体,通常无法在一个模型中满足全部要求,而必须建立同一客体的一整套模型(在某些情况下是层次化的“嵌套”模型集),其中每一个都最适合解决交付给它的那一类课题。

大规模建立模型的需要,要求制定一套规则与途径,以降低模型研制的成本,并减少日后难以消除的错误出现的可能。这样一套规则可以称为建立数学模型的技术。

任何数学模型的建立过程都可以表示为若干阶段的序列:

  1. 调研建模客体并拟定模型研制的技术任务书(课题的实质性提法);
  2. 课题的概念性提法与数学提法;
  3. 定性分析与模型适定性的检验;
  4. 求解方法的选择与论证;
  5. 求得解;
  6. 研制求解算法并研究其性质;把算法实现为软件;
  7. 模型适当性的检验;
  8. 所建模型的实际运用。

数学模型——尤其是运用数值方法与计算技术的模型——的建立需要大量的智力、财力与时间资源。因此,只有在没有更简单的途径来解决所面临问题时(例如改造现有模型),才会决定研制新模型。

对新模型的需要可能与科学研究有关,特别是产生于不同知识领域的交叉处。作出建立新数学模型的决定之后,委托方便寻找承担这项工作的团队。研制团队通常包括不同专业的人员:应用数学家、熟知建模客体的专业领域专家,以及程序研制人员。确认建立模型的决定并组成研制团队之后,即进入调研阶段。该阶段的主要目标,是拟定建模课题的实质性提法。课题的实质性提法,是用通常语言列出的、委托方希望得到解答的关于建模客体的主要问题。

拟定新模型应当回答的问题清单,本身往往就是一个课题,需要具备特定知识与能力的专门人才。他们不仅要透彻了解建模所涉及的专业领域,知晓现代计算数学与计算技术的能力,还要善于同人打交道——善于从那些凭直觉“感觉”建模客体及其行为细微之处的实践专家口中把问题挖掘出来。这类专门人才例如包括系统分析人员、系统工程师和运筹学专家。

提出课题的人应当在分析所收集全部信息的基础上确定对未来模型的要求:一方面要让委托方满意,另一方面又要能在给定的期限与经费内实现。系统分析人员(或运筹学专家)必须具备这样一种能力:从关于建模客体的大量结构松散、各式各样的信息中,从委托方各种表述含糊的意愿与要求中,提炼出实际可以实现的本质内容。

系统分析人员(工程师、运筹学专家)依据所收集的建模客体信息,与委托方共同表述课题的实质性提法。这一提法通常并非最终版本,可以在模型研制过程中加以精确化和充实。不过,此后对实质性提法的一切调整与改动都应当是细微的、非原则性的。

调研过程中收集的全部材料——关于客体积累的知识、课题的实质性提法、对模型实现方式与结果呈现方式的补充要求——都以模型设计与研制技术任务书的形式记录下来。技术任务书是调研阶段的收尾文件。调研中收集到的客体信息越完整,实质性课题就能提得越清楚,已积累的经验与知识就能考虑得越充分,模型研制后续阶段的困难也就越能避免。

与实质性提法不同,建模课题的概念性提法通常由研制团队成员拟定,不需要委托方代表参与;其依据是上一阶段形成的技术任务书,并利用关于建模客体的已有知识和对未来模型的要求。团队成员对关于建模客体的全部已有信息进行分析和共同讨论,从而形成客体的概念模型——它是每位成员各自形成的认知模型的综合。

建模课题的概念性提法,是用各门具体学科的术语列出的、委托方所关心的主要问题,以及关于建模客体属性与行为的一整套假说。

在拟定概念性提法时,困难最大的是处于不同学科交叉处的模型。描述同一客体时所用传统、概念与语言的差异,是建立跨学科模型的严重障碍。

概念性提法完成之后,就可以作出建模课题的数学提法,其中包括描述建模客体行为与属性的一整套数学关系式。

建模课题的数学提法,就是描述建模客体行为与属性的一整套数学关系式。

若下列各项检验都已完成并得到肯定结果,则认为数学模型是适定的:量纲分析、量级检验、依赖关系性质的检验、极端情形分析、边界条件、物理意义以及数学上的封闭性。数学提法比概念性提法更为抽象,因为它把原课题归结为一个纯数学课题,而这类课题已有成熟的求解方法。

构成数学模型“内核”的那些课题,其求解方法都可以分为解析方法与算法方法(数值方法)两类。

应当指出,在利用解析解求取数值结果时,往往同样需要研制相应的、在计算机上实现的算法。

不过,这种情况下最初的解具有解析表达式(或一组表达式)的形式;而基于算法方法的解,则原则上无法归结为该课题的精确解析解。

选用哪一种研究方法,很大程度上取决于研制团队成员的资质与经验。解析方法便于随后分析结果,但只适用于相对简单的模型。如果数学课题(哪怕是简化的提法)允许解析求解,那么这种解无疑优于数值解。

算法方法把课题归结为一种算法,借助计算技术进行计算实验。这类实验中建模的精度,在很大程度上取决于所选方法及其参数。算法方法的实现通常更为费力,要求研制团队成员精通计算数学,拥有丰富的专用软件库和强大的计算资源。

数值方法只适用于适定的数学课题,这大大限制了它们在数学建模中的运用。一切数值方法的共同之处,是把数学课题归结为有限维课题。这多半通过对原课题作离散化来实现,即用离散变量的函数代替连续变量的函数。运用任何数值方法都不可避免地给结果带来误差。原课题数值求解时产生的误差可分为三个主要部分:与原始数据(初始条件与边界条件、方程系数与右端项)给定不精确相关的固有误差;与过渡到原课题的离散类似物相关的离散化误差;以及与计算机中数的表示精度有限相关的舍入误差。

对任何具体的计算算法,一个自然的要求是这三类误差在量级上相互协调。

数值方法(近似方法)总是以计算算法的形式实现。因此,对算法的一切一般要求同样适用于计算算法。首要的要求是算法必须可行——它应当在可接受的机时内解决课题。算法的一项重要特征是精度,即能够在有限次运算内得到原课题给定精度的解。

算法的运行时间取决于达到给定精度所需的运算次数。对任何数学课题通常都可以提出若干种算法,它们都能给出所需精度的解,但运算次数不同。在同样精度下所需运算次数较少的算法,称为更经济的算法,或更高效的算法。

计算算法执行过程中,每一计算步都会产生一定误差。从一步到下一步,这一误差可能增长,也可能不增长(在某些情况下甚至可能减小)。如果计算过程中误差无限增长,则称该算法不稳定或发散;反之则称该算法稳定或收敛。

数值方法极其繁多,这使得在每一具体情形下选定某一方法相当困难。既然实现某一模型可以采用若干种可供替换的算法方法,那么选择具体方法时就要考虑:哪一种在效率、稳定性与结果精度上最适合该模型,以及研制团队成员对哪一种最为熟悉。

在建立用于解决各类科研、设计工艺与管理课题的各种软件系统时,如今数学模型通常都是其基础。由此产生了把模型实现为计算机程序的需要。研制可靠而高效的软件,其复杂程度不亚于建立数学模型的此前各个阶段。要成功完成这一课题,只有在熟练掌握现代编程语言与技术、了解计算能力与现有软件、以及了解计算数学方法实现特点的条件下才有可能。

软件研制过程可以分为几个阶段:

  • 拟定软件研制的技术任务书;
  • 设计软件系统的结构;
  • 算法的编码;
  • 测试与调试;
  • 维护与运行。

软件研制的技术任务书以技术规格说明的形式记录。在设计阶段形成软件系统的总体结构:把整个程序划分为若干软件模块;为每个模块提出功能要求,并研制实现这些功能的算法;确定模块之间的交互方案,即软件系统的数据流图;制定测试计划,并规定用于测试各模块及系统整体的输入数据。

实现数学模型的大多数程序由三个主要部分构成:

  • 前处理器(准备并检验模型的输入数据);
  • 求解器(求解课题,进行计算实验);
  • 后处理器(结果的可视化与呈现)。

应当高度重视采用现代编程技术。任何这类技术的目的,首先是提高软件的可靠性和研制人员的劳动生产率。软件项目越严肃、规模越大,运用现代编程技术的问题就越重要。忽视这些问题会导致工期大幅拖延和软件系统可靠性下降。

要保证解决某一类课题的软件系统可靠、研制周期短,一个关键因素是拥有一个成熟的、相互兼容的软件模块库。尽可能广泛地使用标准软件构件,程序就更可靠,研制也更快。

数学模型的适当性,是指所研制模型得出的结果与实验数据或基准课题结果相符合的程度。

模型适当性检验有两个目标:

  • 检验在概念性提法与数学提法阶段所提出的假说体系是否成立。只有在求解方法已通过检验、软件已全面调试并排除全部错误与冲突之后,才应着手检验假说;
  • 确认结果的精度符合技术任务书中规定的精度。

所研制数学模型的适当性检验,通过与真实客体的现有实验数据、或与此前建立并经充分验证的其他模型的结果相比较来进行。前一种情形称为与实验比较的检验,后一种称为与基准课题结果的比较。

建模精度问题取决于对模型提出的要求及其用途,同时还须考虑实验结果的精度或基准课题提法的特点。对用于粗略计算和量级估算的模型,10—15% 的精度即被认为令人满意;而对用于控制与监测系统的模型,所需精度可能是 1—2%,甚至更高。

当模型适当性出现问题时,纠正工作应当从系统分析建模结果与实验结果不符的一切可能原因入手。首先应当研究模型,并针对可变参数(初始条件与边界条件、刻画建模客体属性的参数)的不同取值评估其适当程度。如果模型在研究者所关心的参数范围内不适当,可以尝试精确化模型中常数与初始参数的取值。若这样仍无肯定结果,那么改进模型就只剩下一条路:修订所采纳的假说体系。这一决定实际上意味着回到模型研制过程的第二阶段,并可能不仅导致数学提法的重大改动,还会导致求解方法的重大改动(例如从解析方法转向数值方法)、软件的彻底返工,以及新一轮模型适当性检验。因此,修订所采纳假说体系的决定必须权衡再三,只有在改进模型适当性的其他一切途径都已用尽时才作出。

描述性模型用于刻画某一现象或过程中所研究的参数,以及研究这些参数变化的规律性。这类模型可用于研究所考察客体在各种输入数据组合与工况下的属性和行为,可用于建立优化模型,也可用于建立复杂系统的仿真模型。

为科研目的研制的模型,通常不会做到可向外部用户分发的软件系统水平。它们的寿命一般限于相应方向科研计划的持续时间。这类模型的特点是带有探索性质、使用新的计算方案与算法,以及用户界面不完善。

面向随后向外部用户分发或商业发行的模型及基于它们的软件系统,则具有完善、便于用户使用的界面,以及强大的前处理器与后处理器。这类模型通常基于经过验证、久已确立的提法与计算方案。不过应当记住,这类模型只面向解决界定明确的一类课题。

无论模型的用途如何,研制团队都有义务对建模结果作定性分析与定量分析。

在与模型打交道的过程中,研制人员成为与建模客体相关领域的专家。他们对客体的属性形成相当透彻的认识,并能够预测和解释客体的行为。

因此,对建模结果的全面分析使人能够:

  • 改进所考察的客体,找到它的最优特性,或者至少最大限度地考虑它的行为与属性;
  • 划定模型的适用范围;
  • 检验在数学提法阶段所采纳假说的正确性,并评估在保持所需精度的前提下简化模型以提高其效率的可能;
  • 指出模型进一步发展的方向。