i.常微分方程初值问题数值解法常微分方程初值问题的真解可以看成是从给定初始点出发的一条连续曲线。差分法是常微分方程初值问题的主要数值解法,其目的是得到若干个离散点来逼近这条解曲线。有两个基本途径。一个是用离散点上的差商近似替代微商。另一个是先对微分方程积分得到积分方程,再利用离散点作数值积分。i.1 常微分方程差分法考虑常微分方程初值问题:求函数u(t) 满足du f (t,u), 0 t T(i.1a)dtu(0) u0(i.1b)其中 f (t,u) 是定义在区域G : 0 t T , u 上的连续函数,u0 和T 是给定的常数。我们假设 f (t,u) 对u 满足 Lipschitz 条件,即存在常数 L 使得f (t,u1) f (t,u2) L u1 u2 , t [0,T]; u1,u2 (,)(i.2)这一条件保证了(i.1)的解是适定的,即存在,唯一,而且连续依赖于初值u0 。通常情况下,(i.1)的精确解不可能用简单的解析表达式给出,只能求近似解。本章讨论常微分方程最常用的近似数值解法-差分方法。先来讨论最简单的 Euler 法。为此,首先将求解区域[0,T]离散化为若干个离散点:0 t0 t1 其中tn hn , h 0 称为步长。在微积分课程中我们熟知,微商(即导数)是差商的极限。反过来,差商就是微商的近 tN 1 tN T(i.3)似。在t t0 处,在(i.1a)中用向前差商 u(t1) u(t0)du代替微商,便得dthu(t1) u(t0) hf (t0,u(t0)) 0如果忽略误差项0 ,再换个记号,用ui 代替u(ti) 便得到u1 u0 hf (t0,u0)一般地,我们有Euler 方法:un1 un hf (tn,un), n 0,1,从(i.1b) 给出的初始值u0 出发,由上式可以依次算出t1,, N 1(i.4),tN 上的差分解u1,,uN 。下面我们用数值积分法重新导出 Euler 法以及其它几种方法。为此,在区间[tn,tn1]上积分常微分方程(i.1a),得u(tn1) u(tn) tn1tnf (t,u(t))dt(i.5)用各种数值积分公式计算(i.5)中的积分,便导致各种不同的差分法。例如,若用左矩形公式就得到 Euler 法(i.4)。如果用右矩形公式,便得到下面的:隐式Euler方法:un1 un h f (tn1,un1), n 0,1,类似地,如果用梯形公式,就得到改进的E u l e方法run1 un , N 1(i.6)h2f[ t, ) f1t(n( unn1nu,)]n,(i.7)0 , 1,N,1当 ...