周水生,王保軍,安亞利
西安電子科技大學 數(shù)學與統(tǒng)計學院,西安 710071
在工程研究和科學計算中,大多數(shù)微分方程很難得到解析解。為了簡化計算又能滿足一定的實際需求,數(shù)值解的方法被應用。常用的數(shù)值方法有[1]:歐拉法,龍格-庫塔法,有限差分法,打靶法以及配置法等。龍格-庫塔法實質(zhì)是Taylor展式的變形,函數(shù)越光滑精度越高,常用的ode45就是具有4階精度的龍格-庫塔法。雖然數(shù)值解得到廣泛應用,但解的形式離散,需要經(jīng)過額外的插值過程獲得整個區(qū)域的解,同時為了獲取更高精度的數(shù)值解,則需要不斷減小步長,這些都增加了計算量。
近年,隨著計算機技術(shù)的發(fā)展,一些新的智能算法被應用近似求解微分方程。這些方法基于不同的回歸模型并利用優(yōu)化方法求解該模型。它們克服了傳統(tǒng)方法的缺陷,獲得封閉連續(xù)可微的近似解析解。如基于遺傳算法求解常微分方程[2],神經(jīng)網(wǎng)絡方法求解微分方程[3-6],無監(jiān)督核最小平方算法求解常微分方程[7]。盡管這些方法有很好的效果,但也有一些缺點,如神經(jīng)網(wǎng)絡的方法無法確定隱藏單元的數(shù)量,并且容易陷入局部最小值而無法得到令人滿意的結(jié)果。
支持向量(SVM)[8]是一種機器學習算法基于VC維理論和結(jié)構(gòu)風險最小化,由Vapnik在1995年提出。該算法適用于解決小樣本的分類和回歸問題,具有很強的泛化能力。然而,對于大樣本數(shù)據(jù),它不得不求解一個復雜的二次規(guī)劃(QP)問題而花費大量時間。Suykens[9]提出LS-SVM把不等式約束轉(zhuǎn)化為等式約束,最終求解一個線性方程組,避免了求解復雜的QP問題,同時通過減少稀疏性而加快計算速度。文獻[10]應用LS-SVM模型近似求解常微分方程,該方法將常微分方程問題轉(zhuǎn)換為含有導數(shù)的目標優(yōu)化問題,再構(gòu)建LS-SVM回歸模型。由于該方法對線性常微分方程有良好的性能,從而推廣到求解線性時變廣義系統(tǒng)[11],參數(shù)估計延遲微分方程[12],以及偏微分方程[13]。然而,該方法對于非線性微分方程,需要與其他方法相結(jié)合[10],否則需要改進模型[14-15],不易求解。另一方面,對于高階線性常微分方程,該方法需要對核函數(shù)求高階導數(shù)[10],從而對核函數(shù)提出了更高要求。
因此,將高階線性常微分方程轉(zhuǎn)化為一階常微分方程組,構(gòu)建含有一階導數(shù)的LS-SVM模型,從而避免對核函數(shù)求高階導數(shù)。為了方便比較和應用,稱此模型為L-LS-SVM。在求解兩點邊值問題時,利用線性疊加原理[16],將邊值問題轉(zhuǎn)化為兩個初值問題,再利用該方法求解。
對于給定的訓練集{tk,yk},k=1,2,…,N,其中tk∈R,yk∈R分別為輸入和輸出數(shù)據(jù)。LS-SVM回歸[9]的目的就是獲得估計函數(shù)yˉ(t)=wT?(t)+b,優(yōu)化模型如下:
首先構(gòu)造如下拉格朗日函數(shù):
其中 αk是拉格朗日乘子,對變量 w,b,αk,ek,k=1,2,…,N求偏導獲得KKT優(yōu)化條件,利用該條件消去變量w和ek,整理后得到如下線性方程組:
這里αk和b通過式(2)得到,K(tk,t)是核函數(shù)。
應用上述方法求解微分方程時,需要對核函數(shù)求導數(shù)[17]。根據(jù)Mercer核理論,并以高斯核函數(shù)K(x,y)=e(-(x-y)2/σ)為例給出其偏導數(shù):
為了方便,并在后面章節(jié)中使用,對上述偏導做如下標記:
給出如下m階時變系數(shù)線性常微分方程:
不同于一般的LS-SVM回歸模型,這里沒有目標值,該模型無噪音,近似解可以通過下面的優(yōu)化問題獲得:
定義線性算子T:
二階線性邊值問題:
由于線性微分方程具有疊加性,它的解可以由一個非齊次的特解和一個齊次的基本解組合而來。應用解析法的思想,邊值問題(9)轉(zhuǎn)化為兩個初值問題:
構(gòu)造LS-SVM優(yōu)化模型:
拉格朗日函數(shù)如下:
其中βk,αki是拉格朗日乘子,對變量求導得到KKT條件,之后消去變量w,ek,k=1,2,整理后得到線性方程組,詳細過程可以參考下一章。利用核函數(shù)標記(4)~(6),將線性方程組寫成矩陣形式:
為了避免大規(guī)模求解線性方程(16),給出如下變形:
對于高階線性常微分方程,將其轉(zhuǎn)化為一階的常微分方程組,構(gòu)造LS-SVM模型求解,為了方便,稱此模型L-LS-SVM。具體過程如下:
給出類似于式(7)的m階線性時變系數(shù)常微分方程:
為了避免對核函數(shù)求高階導數(shù),將上述線性常微分方程轉(zhuǎn)化為如下微分方程組:
構(gòu)造拉格朗日函數(shù):
其中βk,αki是拉格朗日乘子。
對拉格朗日函數(shù)求導數(shù),得到KKT條件如下:
之后消去變量wk,ek,k=1,2,…,m,利用核函數(shù)標記(4)~(6),整理后得到如下矩陣:
這里Q=K+HGAT+GAHT+GAGAT為實對稱矩陣。把線性方程(21)分解成三個小的線性方程(22)并求解,得到問題(20)的近似解如下:
通過一個邊值問題和兩個高階初值問題的常微分方程來驗證L-LS-SVM方法的有效性,并和文獻[10]做了比較。MATLAB 2014a用于實現(xiàn)代碼,所有計算都在Intel-core i7-4790 CPU和8.00 GB RAM的Windows 7系統(tǒng)上進行。
例1考慮邊值問題線性常微分方程:
該邊值問題的精確解為y(t)=t4+t,利用疊加原理,把上述邊值問題轉(zhuǎn)化為兩個初值問題的微分方程:
并再次轉(zhuǎn)化為下面兩個微分方程組:
利用LS-SVM算法分別求出這兩個線性常微分方程組的近似解和,最終利用線性疊加性得到原問題的近似解
圖1是例1的數(shù)值實驗,在區(qū)間[0,1]內(nèi)取10個等距的訓練點,圖1(a)為近似解和精確解實驗對比曲線,圖 1(b)為近似解和精確解的偏差值表1給出了訓練點多少對近似解精度的影響。
圖1 例1的數(shù)值實驗
兩個例子被給出驗證L-LS-SVM方法的有效性,并和文獻[10]中的方法做比較,說明兩種方法得到近似解精度相當,具體結(jié)果見下面的實驗和數(shù)據(jù)。
例2考慮二階時變系數(shù)的常微分方程:
:y′1=y2,y′2=t3,y(1)=2,y′(1)=1,
3
1ty2+
圖2 例2的數(shù)值實驗
圖2 是例2的數(shù)值實驗,在區(qū)間[1,2]內(nèi)取10個等距的訓練點,圖2(a)為近似解和精確解在區(qū)間內(nèi)外對比曲線,圖2(b)為近似解和精確解在區(qū)間內(nèi)的偏差E(t)=。圖3當γ=1010時給出了核間隔參數(shù)σ對近似解精度的影響曲線。表1給出了訓練點多少對近似解精度的影響。文獻[10]中的方法是目前求近似解最好的方法,因此一個詳細的比較在表2中給出。
圖3 初值問題的核函數(shù)間隔參數(shù)σ的敏感性實驗
表1 訓練點多少對y(t)的MSE影響
表2 兩種方法誤差比較
例3考慮三階時變系數(shù)的常微分方程:
把上面的常微分方程轉(zhuǎn)化為微分方程組:
原方程的精確解析解為y(t)=t4。圖3當γ=1010時給出了核間隔參數(shù)σ對近似解精度的影響曲線。
圖4在區(qū)間[0,3]內(nèi)取30個等距的訓練點,圖4(a)為近似解和精確解在區(qū)間內(nèi)外對比曲線,圖4(b)為近似解和精確解在區(qū)間內(nèi)的偏差E(t)=y(t)-yˉ(t),具體實驗數(shù)據(jù)以及與文獻[10]的比較在表2中給出。
對于高階線性常微分方程,應用LS-SVM方法求解時,需要對核函數(shù)求高階導數(shù),為此將高階線性常微分方程轉(zhuǎn)化為一階線性微分方程組,構(gòu)建LS-SVM模型去求解該線性微分方程組,從而避免了對核函數(shù)求高階導數(shù)。對于邊值問題,利用解析的方法將它轉(zhuǎn)化為兩個初值問題的微分方程組求解。實驗結(jié)果證明了L-LS-SVM方法的有效性,并和文獻[10]中的方法做比較,說明兩種方法得到近似解精度相當。將來該方法可以推廣求解任意階線性常微分方程組。
圖4 例3的數(shù)值實驗