数值分析常微分方程数值解
精品文档---下载后可任意编辑 许多实际问题的数学模型是微分方程或微分方程的定解问题。如物体运动、电路振荡、化学反映及生物群体的变化等。常微分方程可分为线性、非线性、高阶方程与方程组等类;线性方程包含于非线性类中,高阶方程可化为一阶方程组。若方程组中的所有未知量视作一个向量,则方程组可写成向量形式的单个方程。因此讨论一阶微分方程的初值问题 (9-1) 的数值解法具有典型性。 常微分方程的解能用初等函数、特别函数或它们的级数与积分表达的很少。用解析方法只能求出线性常系数等特别类型的方程的解。对非线性方程来说,解析方法一般是无能为力的,即使某些解具有解析表达式,这个表达式也可能非常复杂而不便计算。因此讨论微分方程的数值解法是非常必要的。 只有保证问题(9-1)的解存在唯一的前提下,讨论其数值解法或者说寻求其数值解才有意义。由常微分方程的理论知,假如(9-1)中的满足条件 (1)在区域上连续; (2)在上关于满足Lipschitz条件,即存在常数,使得 则初值问题(9-1)在区间上存在惟一的连续解。在下面的讨论中,我们总假定方程满足以上两个条件。 所谓数值解法,就是求问题(9-1)的解在若干点 处的近似值的方法。称为问题(9-1)的数值解,称为由到的步长。今后如无特别说明,我们总假定步长为常量。 建立数值解法,首先要将微分方程离散化,一般采纳以下几种方法: (1) 用差商近似导数 在问题(9-1)中,若用向前差商代替,则得 用其近似值代替,所得结果作为的近似值,记为,则有 这样,问题(9-1)的近似解可通过求解下述问题 (9-2) 得到,按式(9-2)由初值经过步迭代,可逐次算出。此方程称为差分方程。 需要说明的是,用不同的差商近似导数,将得到不同的计算公式。 (2) 用数值积分法 将问题(9-1)中的微分方程在区间上两边积分,可得 (9-3) 用,分别代替,,若对右端积分采纳取左端点的矩形公式,即 同样可得出显式公式(9-2)。 类似地,对右端积分采纳其它数值积分方法,又可得到不同的计算公式。 (3) 用Taylor多项式近似。把在点处Taylor展开,取一次多项式近似,则得 设,略去余项,并以代替,便得 以上三种方法都是将微分方程离散化的常用方法,每一类方法又可导出不同形式的计算公式。其中Taylor展开法,不仅可以得到求数值解的公式,而且容易估量截断误差。 上面我们给出了求解初值问题(9-1)的一种最简单的数值公式(9-2)。虽然它的精度比较低,实践中很少采纳,但它的导出过程能较清楚地说明构造数值解公式的基本思想,且几何意义明确,因此它在理论上仍占有一定的地位。 1简单的数值方法和基本概念 1.1 Euler法与向后Euler法 一、Euler法 Euler方法就是用差分方程初值问题 (9-4) 的解来近似微分方程初值问题(9-1)的解,即由公式(9-4)依次算出的近似值。 从几何上看,微分方程在平面上确定了一个向量场:点处的方向斜率为。问题(9-1)的解代表一条过点的曲线,称为积分曲线,且此曲线上每点的切向都与向量场在这点的方向一致。从点出发,以为斜率作一直线段,与直线交于点,显然有,再从出发,以为斜率作直线段推动到上一点,其余类推,这样得到解曲线的一条近似曲线,它就是折线。因此Euler方法又称为Euler折线法。 二、向后Euler法 在微分方程离散化时,用向后差商代替导数,即,则得到如下差分方程 (9-5) 用这组公式求问题(9-1)的数值解称为向后Euler法。 向后Euler法与Euler法形式上相似,但实际计算时却复杂得多。Euler法计算的公式中不含有,这样的公式称为显式公式;向后Euler法计算的公式中含有,称为隐式公式。显式公式与隐式公式各有特点。显式公式的优点是使用方便,计算简单,效率高。其缺点是计算精度低,稳定性差;隐式公式正好与它相反,它具有计算精度高,稳定性好等优点,但求解过程很复杂,一般采纳迭代法。为了结合各自的优点,通常将显式公式与隐式公式配合使用,由显式公式提供迭代初值,再经隐式公式迭代校正。 上面隐式公式中,在求解时,为已知,是方程的根。一般说来,这是一个非线性方程,因此我们通过构造简单迭代法来求解。迭代格式为 由于满足Lipschitz条件,所以 由此可知,只要,迭代法就收敛到解。 1.2 梯形公式 利用数值积分方法将微分方程离散化时,若用梯形公式计算式(9-3)中右端积分,即 并用代替,则得计算公式 (9-6) 这就是求解初值问题(9-1)的梯形公式。 梯形公式也是隐式格式,一般需用迭代法求解,迭代公式为 由于函数关于满足Lipschitz条件,所以 其中为Lipschitz常数。因此,当时,迭代法就收敛到解。 1.3 局部截断误差与方法的精度 为了刻画近似解的准确程度,引入局部截断误差与方法精度的概念。 定义 假设在某一步的近似解是准确的,即(这个假设称为局部化假设)。在此前提下,用某公式推算所得,我们称 为该公式(即该方法)的局部截断误差。 定义9.2 假如某种方法的局部截断误差是 则称该方法是阶方法,或具有阶精度。显然越大,方法的精度越高。 1)Euler法的截断误差 假设问题的解充分光滑,且前步计算结果是精确的,即 , 于是Euler法的截断误差是 (9-7) 这里称为局部截断误差主项。显然。 2)向后Euler法的截断误差。计算公式是 将对用微分中值定理,有 (在与之间) 将在处Taylor展开 于是 将方程的解作Taylor展开 因此 故 (9-8) 3)梯形法的计算公式是 将对用微分中值定理,有 (在与之间) 将在处Taylor展开 于是 将方程的解作Taylor展开 因此 故 (9-9) 所以梯形法是二阶方法。 1.4 改进的Euler法 我们看到,虽然梯形方法提高了精度,但其算法复杂,在应用迭代公式进行实际计算时,每迭代一次,都要重新计算函数的值,而迭代又要反复进行若干次,计算量很大。为了控制计算量,通常只迭代一两次就转入下一步的计算,这就简化了算法。 具体地说,我们先用欧拉公式求得一个初步的近似值,称之为预测值,预测值的精度可能很差,再用梯形公式将它校正一次得,称为校正值。这样的预测校正系统通常称为改进的欧拉公式。即 预测: 校正: 为了编制程序上机,将上式改写成 (9-10) 算法 (1) 输入,整数,初值 (2) 置 输出 (3) 计算 输出 (4) 若,置,转3;否则停机。 改进欧拉法的截断误差。计算公式是 在处作Taylor展开式,注意到,有 于是 (9-11) 所以改进Euler法是二阶方法。 2 龙格-库塔(Runge-Kutta)法 2.1 Runge-Kutta法的基本思想及一般形式 设初值问题(9-1)的解,按微分中值定理,必存在,使 (9-12) 图9-3