微分方程边值问题的数值方法 下载本文

内容发布更新时间 : 2024/6/26 14:47:09星期一 下面是文章的全部内容请认真阅读。

微分方程边值问题的数值方法

二阶常微分方程为

本部分内容只介绍二阶常微分方程两点边值问题的的打靶法和差分法。

y???f(x,y,y?),a?x?b

(1.1)

当f(x,y,y?)关于y,y?为线性时,即f(x,y,y?)?p(x)y??q(x)y?r(x),此时(1.1)变成线性微分方程

y???p(x)y??q(x)y?r(x),a?x?b

(1.2)

对于方程(1.1)或(1.2),其边界条件有以下3类: 第一类边界条件为

y(a)??,y(b)??

(1.3)

当??0或者??0时称为齐次的,否则称为非齐次的。 第二类边界条件为

y?(a)??,y?(b)??

(1.4)

当??0或者??0时称为齐次的,否则称为非齐次的。 第三类边界条件为

y(a)??0y?(a)??1,y(b)??0y?(b)??1

(1.5)

其中?0?0,?0?0,?0??0?0,当?1?0或者?1?0称为齐次的,否则称为非齐次的。微分方程(1.1)或者(1.2)附加上第一类,第二类,第三类边界条件,分别称为第一,第二,第三边值问题。

1 打靶法介绍

下面以非线性方程的第一类边值问题(1.1)、(1.3)为例讨论打靶法,其基本原理是将边值问题转化为相应的初值问题求解。

【原理】假定y?(a)?t,这里t为解y(x)在x?a处的斜率,于是初值问题为

?y???f(x,y,y?)? ?y(a)???y?(a)?t?(1.6)

令z?y?,上述二阶方程转化为一阶方程组

?y??z?z??f(x,y,z)? ?y(a)?????z(a)?t(1.7)

原问题转化为求合适的t,使上述初值问题的解y(x,t)在x?b的值满足右端边界条件

y(b,t)??

(1.8)

这样初值问题(1.7)的解y(x,t)就是边值问题(1.1)、(1.3)的解。而对给定的t,求(1.7)的初值问题可以用欧拉方法、龙格-库塔方法等初值问题的数值解法求解。

理论上y(x,t)是隐含t的连续函数,如果y(x,t)已知,要使得(1.8)成立,可以通过求非线性方程(1.8)的零点来得到合适的t,这可用任何方程求根的方法,例如牛顿法、或者其它迭代法。

实际上,y(x,t)是很难找到的,因此必须寻找满意的离散解数值解。

下面叙述打靶法的计算过程:(这里?为允许误差,t的修改使用线性插值方法) Step 1:先设t?t0,求解初值问题(1.7),得到y(b,t0)??0;

若|???0|??,则y(xj,t0)(j?0,1,,n)为问题(1.7)的满意的离散解,结束;

Step2: 若|???0|??时,令t?t1,求解初值问题(1.7),得到y(b,t1)??1; 若|???1|??,则y(xj,t1)(j?0,1,否则转Step3;

Step3:由线性插值得到一般计算公式

,n)为问题(1.7)的满意的离散解,结束;

tk?1?tk?y(b,tk)??y(b,tk)?y(b,tk?1)(tk?tk?1),k?1,2, (1.9)

Step4: 令t?tk?1,求解初值问题(1.7),得到y(b,tk?1)??k?1;

若|???k?1|??,则y(x,)(jtk?1否则转Step3。

这个过程好比打靶,tk为子弹发射率,y(b)??为靶心,当|???k|??时则得到解,故称打靶法。

【例1】用打靶法求解非线性两点边值问题

j01,?,)结束; n为问题(1.7)的满意的离散解,

?4y???yy??2x3?16?,2?x?3 ?y(2)?8?y(3)?353??6要求误差??0.5?10。精确解为 y(x)?x2?8。 x【解】:首先将原问题化成初值问题

?y??z?yz?z???4???y(2)?8?z(2)?tk?x32?4

对每个tk,使用4阶RK方法求解上述问题,即利用公式

yn?1?yn?h6(k1?2k2?2k3?k4)h其中 k1?f(tn,yn),k2?f(tn?1, 2h,yn?2k1)h k3?f(tn?12h,yn?2k2),k4?f(tn?h,yn?hk3)计算,取步长为 h=0.02。

Step1 选择t0?1.5,求得y(3,t0)?11.4889,|y(3,t0)?35; 3|?0.1777??Step2 选择t1?2.5,求得y(3,t1)?11.8421,|y(3,t1)?35; 3|?0.0755??Step3 根据t0,t1以及y(3,t0)?11.4889和y(3,t1)?11.8421,利用公式(1.9),计算得到

t2?t1?y(3,t1)?35/3y(3,t1)?y(3,t0)(t1?t0)?2.0032251

Step4 对t2,利用RK方法求解,计算得到y(3,t2)?11.6678,,转Step3。|y(3,t2)?353|??重复Step3和Step4,可求得

t3?1.999979,y(3,t3)?11.66659; t4?2.000000,y(3,t4)?11.66666667,

满足要求,此时解y(xj,t4)(j?0,1,

对于第二类、第三类边值问题也可以作类似处理。例如,对第二类边值问题,它可以转化为以下边值问题

,m)即为所求。