郭 鵬
(上海電機學(xué)院 商學(xué)院, 上海 201306)
Riccati方程有很多重要的應(yīng)用,如在現(xiàn)代的控制理論中,一個線性二次型的最優(yōu)控制問題中,最優(yōu)反饋增益矩陣就是通過求解Riccati方程獲得的。李權(quán)等[1]研究了基于Riccati方程的復(fù)合控制導(dǎo)彈自動駕駛儀設(shè)計,童俊等[2]基于Riccati方程和Kuhn-Munkres算法研究了多傳感器跟蹤資源分配,徐啟華等[3]研究了基于Riccati方程的航空發(fā)動機的魯棒控制。
從這類方程的提出至今已有300余年,早在1841年,法國數(shù)學(xué)家Liouville就證明了,Riccati方程一般情況下沒有初等解法,即一般情況下無法用積分法來求解此類方程。Riccati方程的求解,自該方程誕生以來,一直受到很多學(xué)者的關(guān)注。鐘萬勰[4]給出了關(guān)于Riccati方程的精細(xì)積分,楊云路等[5]研究了一類Riccati方程特解的求法,王明建等[6]研究了用一階方程組求Riccati方程的特解。如果已經(jīng)知道Riccati方程的一個根,將Riccati方程轉(zhuǎn)化為Bernouli方程,對于Bernoulli方程,我們可以求解,這樣即可給出Riccati方程的解。關(guān)于Riccati方程的研究,還可以參考文獻[7-13]。
對于Riccati方程的一些特殊情況,已經(jīng)證明了Riccati方程可以用初等方法給出解析解,但是像這類能給出解析解的Riccati方程畢竟是有限的,絕大部分的Riccati方程還是很難求解的。因此,對于一般情況下的Riccati方程,如何給出其近似解也是值得探討的。
Adomian算子分裂法是一類解決非線性方程的有效方法[14-15]。下面針對Adomian方法的具體實現(xiàn)過程給出一個簡單介紹。對于每一個非線性方程,可以將之分解為如下形式:
L(u)+R(u)+N(u)=g
(1)
式中:L(u)為方程最高階算子的線性部分;R(u)為線性部分的余項;N(u)為非線性項;g為右端項。
在一般意義上,算子L是可逆的,如果將L-1同時作用在式(1)的兩側(cè),即可以得到
u=-L-1R(u)-L-1N(u)+L-1g+φ
(2)
式中:φ同時滿足初始條件和Lφ=0;L-1的形式取決于算子L,如果L是一階導(dǎo)數(shù),那么L-1就是一重積分,如果L是二階導(dǎo)數(shù),那么L-1就是二重積分。
(3)
式中:n∈N。顯然對于前幾項Adomian多項式,可以寫出具體的對應(yīng)關(guān)系:
(4)
將式(4)代入式(2),即有
(5)
如果將u0取為u0=L-1g+φ,這時可以獲得如下的關(guān)系:
(6)
理論上來說,有了上述的遞推關(guān)系,就可以求出所有的ui(i=1,2,…),進而給出方程解的具體表達式。求出所有項然后再給出解的表達式顯然是不可能完成的,但是Adomian多項式一般有著良好的收斂性,通常情況下,只需要計算出有限的幾項,就可以給出收斂精度較好的結(jié)果。關(guān)于Adomian方法的收斂性,Cherruault等[16]給出了一系列證明。
例1研究的非線性Riccati方程,形式如下:
(7)
該方程滿足的初始條件y|t=0=2。
為了便于討論,將方程(7)寫成如下形式:
(8)
在這里L(fēng)是一階導(dǎo)數(shù),則L-1為一重積分,線性項為(2t-1)y,非線性項為(1-t)y2,右端項為t。為了更直觀說明計算過程,接下來取n=3,按照所給的格式,可以得到如下一系列表達式:
(9)
上面的這幾項即為我們研究的Riccati方程級數(shù)形式解的前幾項,如果將所得到的這幾項相加,即有如下的近似解:
(10)
對于Adomian算子分裂法,理論上計算項數(shù)越多,近似效果越好。對于n較大時,近似解的表達式也可類似給出,一般表達式比較繁瑣,這里略去。本文中的關(guān)于解析近似解的計算都是在Maple12上進行的,關(guān)于數(shù)值計算的結(jié)果都是在Matlab上計算的。圖1中給出了Riccati方程精確解與n取不同值時,所得近似解。由圖可見,“*”型線表示的是n=9時的近似解,非常明顯,n=9時的近似解比n=3和n=6時的近似解更接近精確解。當(dāng)n越大時,近似解越接近精確解。
圖1 當(dāng)n取不同值時,Riccati方程近似解與精確解的比較
表1給出了當(dāng)n=9時,自變量t取不同值時,Riccati方程近似解,精確解及絕對誤差。從絕對誤差一欄可以看出,算子分裂法在計算Riccati方程的近似解的誤差是比較小的,如果將n取得更大一些,絕對誤差還會更小。
表2中給出n取不同值時,分別給出所得到近似解與精確解之間的誤差。從絕對誤差結(jié)果中,可以看出t取不同值時,n越大,絕對誤差越小,這也從實驗上驗證了算子分裂法的收斂效果。如果希望得到誤差更小的近似解,只需將n取大一些,多計算幾項即可。
表1 當(dāng)n=9時,Riccati方程近似解及絕對誤差
例2下面研究的非線性Riccati方程形式如下:
(11)
該方程滿足的初始條件y|t=0=2。
在這里,線性項為-2e2ty,非線性項為ety2,右端項為et-e3t。當(dāng)選取n=3時,給出該方程級數(shù)形式解的前幾項的具體表達式如下:
(12)
由此可得當(dāng)n=3時解析近似解的表達式:
(13)
也可得當(dāng)n=6時解析近似解的表達式:
(14)
當(dāng)n=6時,從解的形式上明顯能夠看出,解的表達式比n=3要復(fù)雜一些。當(dāng)n=6時,解的表達式的精確度要比n=3時的解析解的精確度要好(見表3、圖2)。解析解精確度的增加是以計算量的增加為代價的,越高的精確度也就意味著計算量的增加。類似的,還可給出當(dāng)n=9時的解析近似解的表達式,由于當(dāng)n=9時的表達式太冗長,表達式的具體形式從略。
表3 當(dāng)n取不同值時,Riccati方程近似解與精確解的絕對誤差
圖2 當(dāng)n取不同值時,Riccati方程近似解與精確解的比較
在圖2中,給出了n=6,9,12時,精確解與解析近似解的比較。由圖2可見當(dāng)n=12時“□”線型所表示的解析近似解最接近精確解,而n=6時“○”線型所表示的解析近似解與精確解的誤差最大。
表3中給出了n取不同值時,所得到近似解與精確解之間的誤差。從絕對誤差結(jié)果中可以看出,t取不同值時,n越大,絕對誤差越小,同時也能夠看出精確度的增加是以計算量的增加為代價的。理論上來說計算的項數(shù)越多,所得結(jié)果的精確度也就越高。
本文首先介紹了Adomian算子分裂法,并給出了該算子分裂法的一般計算過程,結(jié)合Adomian多項式,給出了解析近似解的遞推關(guān)系。其次,針對很難給出解析解的Riccati方程,將Adomian算子分裂法引入計算,將Riccati方程分為線性部分、非線性部分、右端項等。緊接著,在第一個例題中給出了Riccati方程,當(dāng)n=3時的解析近似解的具體表達式,并探討了當(dāng)n=3,6,9時,解析解與精確解的誤差。在第2個例子中,不僅給出了當(dāng)n=3時的解析近似解的具體表達式,還給出了當(dāng)n=6時的解析近似解,對于n=6,9,12時,也給出了解析近似解與精確解的誤差。
從實驗結(jié)果中發(fā)現(xiàn),n取得越大,解的精度就越高,理論上來說,只要n取得足夠大,就能夠得到任意的精度。但是獲得的精度越高,計算量也就越大,計算機就需要花費很多內(nèi)存來保存解析近似解。最后通過數(shù)值實驗,我們只選取了有限的幾項,驗證了算子分裂法的收斂效果,數(shù)值實驗的結(jié)果充分表明,該方法對于求解Riccati方程非常有效。
在后續(xù)的工作中,我們將嘗試把Adomian算子分裂法引入到求解其他類型的微分方程,同時還將考慮引用改進的Adomian算子分裂法,以期在計算相同項數(shù)的同時獲得更高的計算精度。