打靶法(英語: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形為
![{\displaystyle f(t,y(t),y'(t))=p(t)y'(t)+q(t)y(t)+r(t).\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2b46a5f0b210191bcc1f1d9b60a14e1136e49832)
這個情況下,邊界值問題的解通常給出為
![{\displaystyle y(t)=y_{(1)}(t)+{\frac {y_{1}-y_{(1)}(t_{1})}{y_{(2)}(t_{1})}}y_{(2)}(t)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c537c4985f476b9a5b794b82b46c42a4ad5341aa)
其中
是下面的初值問題的一個解
![{\displaystyle y''(t)=f(t,y(t),y'(t)),\quad y(t_{0})=y_{0},\quad y'(t_{0})=0,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7e0e3f961425565b6e6be819f80d2ba84a485e46)
而
是下面的初值問題的解:
![{\displaystyle y''(t)=p(t)y'(t)+q(t)y(t),\quad y(t_{0})=0,\quad y'(t_{0})=1.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/65730b5dcd3aacb3c881b25644d916aaf8c74414)
結果成立的精確條件請參看證明。
Stoer及Burlisch曾提出一個如下的邊界值問題(Section 7.3.1)
![{\displaystyle w''(t)={\frac {3}{2}}w^{2},\quad w(0)=4,\quad w(1)=1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3f8273fe760ebaa558dbf1801b7d90bcde23c2d3)
以下的初值問題
![{\displaystyle w''(t)={\frac {3}{2}}w^{2},\quad w(0)=4,\quad w'(0)=s}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8cd19afa750f96c8e5aa947d6f671e01f690523e)
在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.)