数值分析常微分方程数值解
精品文档---下载后可任意编辑 许多实际问题的数学模型是微分方程或微分方程的定解问题。如物体运动、电路振荡、化学反映及生物群体的变化等。常微分方程可分为线性、非线性、高阶方程与方程组等类;线性方程包含于非线性类中,高阶方程可化为一阶方程组。若方程组中的所有未知量视作一个向量,则方程组可写成向量形式的单个方程。因此讨论一阶微分方程的初值问题 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