第1章 数学建模与误差分析
1.1 数学与科学计算
数学是科学之母,科学技术离不开数学,它通过建立数学模型与数学产生紧密联系,数学又以各种形式应用于科学技术各领域。数学擅长处理各种复杂的依赖关系,精细刻画量的变化以及可能性的评估。它可以帮助人们探讨原因、量化过程、控制风险、优化管理、合理预测。近几十年来由于计算机及科学技术的快速发展,求解各种数学问题的数值方法即计算数学也越来越多地应用于科学技术各领域,相关交叉学科分支纷纷兴起,如计算力学、计算物理、计算化学、计算生物、计算经济学等。
科学计算是指利用计算机来完成科学研究和工程技术中提出的数学问题的计算,是一种使用计算机解释和预测实验中难以验证的、复杂现象的方法。科学计算是伴随着电子计算机的出现而迅速发展并获得广泛应用的新兴交叉学科,是数学及计算机应用于高科技领域的必不可少的纽带和工具。科学计算涉及数学的各分支,研究它们适合于计算机编程的数值计算方法是计算数学的任务,它是各种计算性学科的联系纽带和共性基础,兼有基础性和应用性的数学学科。它面向的是数学问题本身而不是具体的物理模型,但它又是各计算学科共同的基础。
随着计算机技术的飞速发展,科学计算在工程技术中发挥着愈来愈大的作用,已成为继科学实验和理论研究之后科学研究的第三种方法。在实际应用中所建立的数学模型其完备形式往往不能方便地求出精确解,于是只能转化为简化模型,如将复杂的非线性模型忽略一些因素而简化为线性模型,但这样做往往不能满足精度要求。因此,目前使用数值方法来直接求解较少简化的模型,可以得到满足精度要求的结果,使科学计算发挥更大作用。了解和掌握科学计算的基本方法、数学建模方法已成为科技人才必需的技能。因此,科学计算与数学建模的基本知识和方法是工程技术人才必备的数学素质。
1.2 数学建模及其重要意义
数学,作为一门研究现实世界数量关系和空间形式的科学,在它产生和发展的历史长河中,一直是和人们生活的实际需要密切相关。用数学方法解决工程实际和科学技术中的具体问题时,首先必须将具体问题抽象为数学问题,即建立起能描述并等价代替该实际问题的数学模型,然后将建立起的数学模型,利用数学理论和计算技术进行推演、论证和计算,得到欲求解问题的解析解或数值解,最后用求得的解析解和数值解来解决实际问题。本章主要介绍数学建模基本过程和求解数学问题数值方法的误差传播分析。
1.2.1 数学建模的过程
数学建模过程就是从现实对象到数学模型,再从数学模型回到现实对象的循环,一般通过表述、求解、解释、验证几个阶段完成。数学建模过程如图1.2.1所示,数学模型求解方法可分为解析法和数值方法,如图1.2.2所示。
表述是将现实问题“翻译”成抽象的数学问题,属于归纳。数学模型的求解方法则属于演绎。归纳是依据个别现象推出一般规律;演绎是按照普遍原理考察特定对象,导出结论。演绎利用严格的逻辑推理,对解释现象做出科学预见,具有重要意义,但是它要以归纳的结论作为公理化形式的前提,只有在这个前提下
才能保证其正确性。因此,归纳和演绎是辨证统一的过程:归纳是演绎的基础,演绎是归纳的指导。
图1.2.1 数学建模过程示意图
图1.2.2 数学模型求解方法示意图
解释是把数学模型的解答“翻译”回到现实对象,给出分析、预报、决策或控制的结果。最后作为这个过程重要的一个环节,这些结果需要用实际的信息加以验证。
图1.2.1也揭示了现实问题和数学建模的关系。一方面,数学模型是将现实生活中的现象加以归纳、抽象的产物,它源于现实,又高于现实。另一方面,只有当数学模型的结果经受住现实问题的检验时,才可以用来指导实际,完成实践→理论→实践这一循环。
1.2.2 数学建模的一般步骤
一般说来,建立模型需要经过哪几个步骤并没有一定的模式,通常与问题的性质和建模的目的等因素有关。下面介绍建立数学模型的一般过程,如图1.2.3所示:
图1.2.3 数学建模的一般步骤
分析问题 了解问题的实际背景,明确建模目的,搜集必要的信息,如数据和现象等,弄清楚所要研究对象的主要特征,形成一个比较清晰的“数学问题”。
提出假设 根据现象的特征和建模的目的,抓住问题的本质、忽略次要因素,做出必要的、合理的、简化的假设,并且要在合理和简化之间做出恰当的折中。
通常,假设的依据一是处于对问题内在规律的认识,二是来自对现象、数据的分析,以及二者的结合。
建立模型 根据所作的假设,用数学的语言、符号描述对象的内在规律,建立包含常量、变量等的数学模型,如优化模型、微分方程模型、差分方程模型、图论模型等。在建模过程中要遵循尽量采用简单的数学工具这一原则,以便更多的人了解和使用。
模型求解 可以采用解方程、画图形、优化方法、数值计算、统计分析等各种数学方法,特别是当前迅猛发展的数学软件和计算机技术。
解的分析 对求解结果进行数学上的分析,如结果的误差分析、统计分析、模型对数据的灵敏性分析、对假设的强健性分析等。
检验和验证 把求解和分析的结果翻译回到实际问题中,与实际的现象、数据比较,检验模型的合理性和适用性。如果结果与实际不符,问题常常出现在模型假设上,此时应该修改、补充假设,重新建立模型和求解。
应用与推广 应用的方式与问题性质、建模目的以及最终的结果有关。应当指出的是,并不是所有问题的建模都要经过这些步骤,有时几个步骤之间的界限也不是那么分明,建模时不要拘泥于形式上的按部就班,要采用灵活的表述形式。
1.2.3 数学建模的重要意义
作为用数学方法解决实际问题的第一步,数学建模自然有着与数学同样悠久的历史。进入20世纪以来,随着数学以空前的广度和深度向一切领域渗透,以及计算机的出现和飞速发展,数学建模越来越受到人们的重视,数学建模在现实世界中有着重要意义。
(1)在一般工程技术领域,数学建模仍然大有用武之地。
在以声、光、热、力、电这些物理学科为基础的诸如机械、电机、土木、水利等工程技术领域中,数学建模的普遍性和重要性不言而喻。虽然这里的基本模型是已有的,但是由于新技术、新工艺的不断涌现,提出许多需要用数学方法解决的新问题;高速、大型计算机的飞速发展,使得过去即便有了数学模型也无法求解的课题(如大型水坝的应力计算,中长期天气预报等)迎刃而解;建立在数学模型和计算机模拟基础上的CAD技术,以其快速、经济、方便等优势,大量地替代了传统工程设计中的现场实验、物理模拟等手段。
(2)在高新技术领域,数学建模几乎是必不可少的工具。
无论是发展通讯、航天、微电子、自动化等高新技术本身,还是将高新技术用于传统工业区创造新工艺、开发新产品,计算机技术支持下的建模和模拟都是经常使用的有效手段。数学建模、数值计算和计算机图形学等相结合形成的计算机软件,已经被固化于产品中,在许多高新技术领域起着核心作用,被认为是高新技术的特征之一。在这个意义上,数学不仅仅作为一门科学,是许多技术的基础,而且直接走向了技术的前台。有人认为“高技术本质上是一种数学技术”。 (3)数学迅速进入一些新领域,为数学建模开拓了许多新的处女地。
随着数学向诸如经济、人口、生态、地质等所谓非物理领域的渗透,一些交叉学科如计量经济学、人口控制论、数学生态学、数学地质学等应运而生。当用数学方法研究许多领域中的定量关系时,数学建模就成为首要的、关键的步骤,同时也是这些学科发展与应用的基础。在这些领域里建立不同类型、不同方法、不同深浅程度的模型的余地相当大,为数学建模提供了广阔的新天地。马克思说过:“一门科学只有成功地运用数学时,才算达到了完善的地步。”展望21世纪,
数学必将大踏步地进入所有学科,数学建模将迎来蓬勃发展的新时期。
美国科学院一位院士总结了将数学转化为生产力过程中的成功和失败,得出了“数学是一种关键的、普遍的、可以应用的技术”的结论,认为数学“由研究到工业领域的技术转化,对加强经济竞争力是有重要意义”,因而“计算和建模重新成为中心课题,它们是数学科学技术转化的主要途径”。
1.3 数值方法与算法稳定性
数值计算已成为科学研究的第三种基本手段。所谓数值方法,是指将欲求解的数学模型(数学问题)简化成一系列算术运算和逻辑运算,以便在计算机上求出问题的数值解,并对算法的收敛性和误差进行分析、计算。这里所说的“算法”,不只是单纯的数学公式,而且是指由基本的运算和运算顺序的规定所组成的整个解题方案和步骤。一般可以通过框图(流程图)来直观地描述算法的全貌。
选定适合的算法是整个数值计算中非常重要的一环。例如,当计算多项式
P(x)?anxn?an?1xn?1???a1x?a0
的值时,若直接计算aiix(?i0?,1,再n逐项相加,共需做
1?2???(n?1)?n?n(n?1)次乘法和n次加法。n?10时需做55次乘法和10次加2法。若用著名秦九韶(我国宋朝数学家)算法,将多项式P(x)改成
P(x)?((?((anx?an?1)x?an?2)x???a2)x?a1)x?a0
来计算时,只要做n次乘法和n次加法即可。
对于小型问题,计算速度的快慢和占用计算机内存的多寡似乎意义不大。但对于复杂的大型问题而言,却是起着决定性作用。算法取得不恰当,不仅影响到计算的速度和效率,还会由于计算机计算的近似性和误差的传播、积累直接影响到计算结果的精度,甚至直接影响到计算的成败。不合适的算法会导致计算误差达到不能容许的地步,而使计算最终失败,这就是算法的数值稳定性问题。 数值计算过程中会出现各种误差,它们可分为两大类:一类是由于算题者在工作中的粗心大意而产生的,例如笔误以及误用公式等,这类误差称为“过失误差”或“疏忽误差”。它完全是人为造成的,只要工作中仔细、谨慎,是完全可以避免的;而另一类为“非过失误差”,在数值计算中这往往是无法避免的,例如近似带来的误差、模型误差、观测误差、截断误差和舍入误差等。对于“非过失误差”,应该设法尽量降低其数值,尤其要控制住经多次运算后误差的积累,以确保计算结果的精度。
下面是一个简单的例算,可以看出近似值带来的误差和算法的选择对计算结果所产生的巨大影响。 例1.3.1计算 x?(2?13) 可用下面四种算式算出: 2?1161),x?。 2?199?702x?(2?1)6,x?99?702,x?(