打靶法(英语:Shooting method)是数值分析中在求解边界值问题时,将解归约为求解数个初值问题的方法。下面的讨论在打靶法的解释中有详细注释。
对于一个二阶常微分方程的边界值问题,该方法表述如下:
令
![{\displaystyle y''(t)=f(t,y(t),y'(t)),\quad y(t_{0})=y_{0},\quad y(t_{1})=y_{1}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/577cdb405658736142aec9a7e7e891d1a4ecd107)
为边界值问题。
令 y(t1; a) 代表下列初值问题的一个解
![{\displaystyle y''(t)=f(t,y(t),y'(t)),\quad y(t_{0})=y_{0},\quad y'(t_{0})=a}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e9ac382b76517e9a1bdad40e90841eb69e2e2511)
定义函数F(a)为y(t1; a)和给定边界值y1的差
![{\displaystyle F(a)=y(t_{1};a)-y_{1}\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b1a4c1b599c4516ba936a0d611c889fd011d655e)
若边界值问题有解,则F有一个根,而这个根就是y'(t0)的给出边界问题解y(t)的取值。
上述问题的求解可以采用通常的求根方法,例如二分法或者牛顿法。
边界值问题是线性的,若f形为
-
这个情况下,边界值问题的解通常给出为
-
其中 是下面的初值问题的一个解
-
而 是下面的初值问题的解:
-
结果成立的精确条件请参看证明。
Stoer及Burlisch曾提出一个如下的边界值问题(Section 7.3.1)
-
以下的初值问题
-
在s = −1, −2, −3, ..., −100等条件下求解,且令F(s) = w(1;s) − 1,其图形绘制在第一图中,根据图中可知,其解接近−8及−36。
第二图绘出一些w(t;s)的轨迹。
初值问题的解是由LSODE演算法计算,利用数学软体GNU Octave实现。
Stoer及Bulirsch列出有二个解,可以用代数法求解。
对应初始条件约w′(0) = −8及 and w′(0) = −35.9时的值。
F(s) = w(1;s) − 1.
w(t;s)的轨迹,s = w'(0)等于−7, −8, −10, −36及−40(颜色分别是红、绿、蓝、浅蓝、洋红),(1,1)有绘制一红色的菱形。
- Josef Stoer and Roland Bulirsch. Introduction to Numerical Analysis. New York: Springer-Verlag, 1980. (See Section 7.3.)