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