第八章常微分方程数值解法8.6边值问题的数值解法在具体求解常微分方程时,必须附加某种定解条件。定解条件通常有两种,一种是初始条件,另一种是边界条件。与边界条件相应的定解问题称为边值问题。本节介绍求解两点边值问题,,,,,byyyyxfy(8.6.1)。,,byyxfyxqyxpy(8.6.2)的数值解法。当关于和是线性时,式(8.6.1)为线性两点边值问题fyy8.6.1打靶法打靶法的基本原理是将两点边值问题(8.6.1)转化为下列形式的初值问题第八章常微分方程数值解法(8.6.3),,,,,ksyxyyyxfy这里的为在处的斜率。令,上述二阶方程可降为一阶方程组ksyyz(8.6.4)。,,,,,ksazayzyxfzzy因此,边值问题变成求合适的,使上述方程组初值问题的解满足原边值问题的右端边界条件,从而得到边值问题的解。这样,把一个两点边值问题的数值解问题转化为一阶方程组初值问题的数值解问题。方程组初值问题的所有数值方法在这里都可以使用。问题的关键是如何去找合适的初始斜率的试探值。对给定的,设初值问题(8.6.3)的解为,它是的隐函数。假设随是连续变化的,记为,于是我们要找的就是方程ksksbyksksksksksxy,ksxy,sxy,0sby,第八章常微分方程数值解法的根。可以用第6章的迭代法求上述方程的根。比如用割线法有。,,,,,,32121211ksbysbysbysssskkkkkkk(8.6.5)这样,可以按下面简单的计算过程进行求解。先给定两个初始斜率,分别作为初值问题(8.6.4)的初始条件。用一阶方程组的数值方法求解它们,分别得到区间右端点的函数的计算值和。如果或,则以或作为两点边值问题的解。否则用割线法(8.6.5)求,同理得到,再判断它是否满足精度要求。如此重复,直到某个满足,此时得到的和就是边值问题的解函数值和它的一阶导数值。上述方程好比打靶,作为斜率为子弹的发射,为靶心,故称为打靶法。10ss,0sby,1sby,0sby,1sby,0sxy,1sxy,2s2sby,2sby,ksksby,ixyiixzyksby第八章常微分方程数值解法值得指出的是,对于线性边值问题(8.6.2),一个简单又实用的方法是用解析的思想,将它转化为两个初值问题:;,,011111ayayxfyxqyxpy。,,1022222ayayyxqyxpy求得这两个初值问题的解和,若,容易验证xy1xy202byxybybyxyxy2211(8.6.6)为线性两点边值问题(8.6.2)的解。例8.7用打靶法求解线性边值问题第八章常微分方程数值解法,,,,21001031242yyxxxyyxy其解的解析表达式为。解先将该线性边值问题转化为两个初值问题xxxy4,,,01003124112111yyxxyyxy。,,11000422222yyyyxy令,将上述两个边值问题分别降为一阶方程组初值问题2211yzyz,,,,,0000312411211111zyxxyxzzzy第八章常微分方程数值解法。,,,000042222222zyyxzzzyxyyyxyxy2211112的打靶法计算值,部分点上的计算值、精确值和误差列于表8-12。iy取h=0.02,用经典R-K法分别求这两个方程组解和的计算值和,然后按(8.6.6)得精确解xy1xy2iy2iy1第八章常微分方程数值解法表8-12ixiy1iy2iyixyiiyxy0000000.2-0.0024079910.2040079890.20160000530.20160000000.4-0.0066550310.4322550240.42560000800.42560000000.60.0196724130.7099275710.72960000830.72960000000.80.1455295851.0640703851.20960000581.20960000001.00.4755701491.5244284552.00000000002.0000000000081053.081080.081083.081058.0例8.8用打靶法求解线性边值问题。,,33538216243yyxyyy要求误差不超过,其解析解是。解对应于(8.6.4)的初值问题为6105.0xxxy82第八章常微分方程数值解法。,,,kszyxzyzzy2824243对于每一个,取h=0.02,用经典R-K法求解。初选,求得=11.4889,则有。再选,求得=11.8421,则有。以作为割线法迭代初值,由割线法计算ks13sy,5.10s03sy,60105.01777.033ysy,5.21s61105.00755.033ysy,10ss,。,,,0032241.233331010112ysysysyssss由此得,仍然不满足精度要求。由和用割线法得到。重复这个过程,直到,再求解相应的初值问题,得到,有。于是得到边值问题的解,打靶过程和边值问题的计算解分别列于表8-13和8-146678.1132sy,1213syss,,,23sy,999979.13s000000.24s666666669.1134sy,64105.033ysy,iy第八章常微分方程数值解法表8-131.52.52.0032241.9999792.00000011.48891411.84214111.66780511.66665911.666667kksys,32.08802.28.47636363788.47636363642.49.09333333529.09333333332.69.83692307859.83692307692.810.697142656210.69714285713.011.666666666911.6666666667表8-14ixiyixyiiyxy988881030.01010.01016.01018.01013.0计算结果表明打靶法的效果是很好的,计算精度取决于所选取的初值问题数值方法的阶和所选取的步长h的大小。不过,打靶法过分依赖于经验,选取试射值,有一定的局限性。第八章常微分方程数值解法差分方法是解边值问题的一种基本方法,它利用差商代替导数,将微分方程离散化为线性或非线性方程组(即差分方程)来求解。先考虑线性边值问题(8.6.2)的差分法。将区间分成n等分,子区间的长度,分点。由nabhnkkhaxk,,,10ba,22111211222hOhxxyxyxyhOhxyxyxykkkkkkk8.6.2差分方法第八章常微分方程数值解法ky忽略余项,将差商分别代替(8.6.2)式中节点处的一阶和二阶导数,实现离散化。设,用近似表示,建立差分方程kxkkkkkkxffxqqxpp,,kxy。,,,,1212211211nkfyqhyyphyyykkkkkkkkk整理后得到关于的线性方程组ky。,,,,121224222121nkfhyhpyqhyhpkkkkkkk(8.6.7)利用边界条件,将它们分别代入上面k=1和k=n-1的两个方程中,整理后得到关于的方程组nyy,0121nyyy,,,。,,,,,,11211221212111221112224222322242222242nnnnnnkkkkkkkhpfhyqhyhpnkfhyhpyqhyhphpfhyhpyqh(8.6.8)第八章常微分方程数值解法这是一个三对角方程组。若,且步长满足,则方程组(8.6.8)的系数矩阵是严格对角占优的。此时,方程组(8.6.8)的解存在惟一,用追赶法求解此方程组时一定是数值稳定的,用Jacobi迭代法求解此方程组时一定是收敛的。baxxq,,02khp其中。因此,当时,差分方程的解收敛到微分方程边值问题的解。在应该用上,有时边界条件按以下方式给出:xyMbxa4max0h。,,,,1219622nkhabMyxykk若,则由常微分方程的理论得出,两点边值问题(8.6.2)的解存在惟一。设是差分问题(8.6.8),而是边值问题(8.6.2)的解在节点的值,,则截断误差有下列估计式baxxqbaCfqp,,,,,,0kyxykxbaCxy,4kxy第八章常微分方程数值解法。,1100bybyayay这里均为已知常数。这时,边界条件中所包含的导数也要替换成相应的差商:1010,,,。,11100001nnnyhyyyhyy它们和差分方程(8.6.7)一起,仍然构成包含n+1个未知的线性方程组。例8.7取不同的步长h,用差分方法求解线性边值问题:。,,1210sin2yyxyy其解析解是。解本题的。取,由方程组(8.6.8)得xxxycossin01xqxp,84hn,1772.24362.01566.243927.206073.143927.206073.14321yyy第八章常微分方程数值解法解此方程组得。而解析解是。由于节点少,步长太大,所以计算精度差。当n=10时,,部分计算结果列于表8-15。当n=20时,近似解误差的最大绝对值不超过。当n=500时,误差的最大绝对值不超过。因此,随着节点数的增加,精度提高。5503.00101.05351.0321yyy,,1xy5412.005412.032xyxy,,20h31041.061065.00-1.0000-1.00000-0.6413-0.6420-0.2198-0.22120.22290.22120.64330.64201.00001.00000表8-15kxkykxy0220820620420222231013.01016.01014.0108.0第八章常微分方程数值解法对于非线性两点边值问题,其离散化后所得到的方程组是非线性的。下面说明用有限差分求非线性边值问题(8.6.1)的数值解。区间划分与离散化方法同线性情形,得到在处的差分方程:kx。,,,,,,1212211211nkhyyyxfhyyykkkkkkk利用边界条件,将它们分别代入k=1和k=n-1的两个方程中,并将已知量移到方程的右边,得到关于的非线性方程组:nyy,0121nyyy,,,。,,,,,,,,,,,,