周水生,王保軍,安亞利
西安電子科技大學 數學與統計學院,西安 710071
在工程研究和科學計算中,大多數微分方程很難得到解析解。為了簡化計算又能滿足一定的實際需求,數值解的方法被應用。常用的數值方法有[1]:歐拉法,龍格-庫塔法,有限差分法,打靶法以及配置法等。龍格-庫塔法實質是Taylor展式的變形,函數越光滑精度越高,常用的ode45就是具有4階精度的龍格-庫塔法。雖然數值解得到廣泛應用,但解的形式離散,需要經過額外的插值過程獲得整個區域的解,同時為了獲取更高精度的數值解,則需要不斷減小步長,這些都增加了計算量。
近年,隨著計算機技術的發展,一些新的智能算法被應用近似求解微分方程。這些方法基于不同的回歸模型并利用優化方法求解該模型。它們克服了傳統方法的缺陷,獲得封閉連續可微的近似解析解。如基于遺傳算法求解常微分方程[2],神經網絡方法求解微分方程[3-6],無監督核最小平方算法求解常微分方程[7]。盡管這些方法有很好的效果,但也有一些缺點,如神經網絡的方法無法確定隱藏單元的數量,并且容易陷入局部最小值而無法得到令人滿意的結果。
支持向量(SVM)[8]是一種機器學習算法基于VC維理論和結構風險最小化,由Vapnik在1995年提出。該算法適用于解決小樣本的分類和回歸問題,具有很強的泛化能力。然而,對于大樣本數據,它不得不求解一個復雜的二次規劃(QP)問題而花費大量時間。Suykens[9]提出LS-SVM把不等式約束轉化為等式約束,最終求解一個線性方程組,避免了求解復雜的QP問題,同時通過減少稀疏性而加快計算速度。文獻[10]應用LS-SVM模型近似求解常微分方程,該方法將常微分方程問題轉換為含有導數的目標優化問題,再構建LS-SVM回歸模型。由于該方法對線性常微分方程有良好的性能,從而推廣到求解線性時變廣義系統[11],參數估計延遲微分方程[12],以及偏微分方程[13]。然而,該方法對于非線性微分方程,需要與其他方法相結合[10],否則需要改進模型[14-15],不易求解。另一方面,對于高階線性常微分方程,該方法需要對核函數求高階導數[10],從而對核函數提出了更高要求。
因此,將高階線性常微分方程轉化為一階常微分方程組,構建含有一階導數的LS-SVM模型,從而避免對核函數求高階導數。為了方便比較和應用,稱此模型為L-LS-SVM。在求解兩點邊值問題時,利用線性疊加原理[16],將邊值問題轉化為兩個初值問題,再利用該方法求解。
對于給定的訓練集{tk,yk},k=1,2,…,N,其中tk∈R,yk∈R分別為輸入和輸出數據。LS-SVM回歸[9]的目的就是獲得估計函數yˉ(t)=wT?(t)+b,優化模型如下:

首先構造如下拉格朗日函數:

其中 αk是拉格朗日乘子,對變量 w,b,αk,ek,k=1,2,…,N求偏導獲得KKT優化條件,利用該條件消去變量w和ek,整理后得到如下線性方程組:


這里αk和b通過式(2)得到,K(tk,t)是核函數。
應用上述方法求解微分方程時,需要對核函數求導數[17]。根據Mercer核理論,并以高斯核函數K(x,y)=e(-(x-y)2/σ)為例給出其偏導數:

為了方便,并在后面章節中使用,對上述偏導做如下標記:

給出如下m階時變系數線性常微分方程:

不同于一般的LS-SVM回歸模型,這里沒有目標值,該模型無噪音,近似解可以通過下面的優化問題獲得:

定義線性算子T:

二階線性邊值問題:

由于線性微分方程具有疊加性,它的解可以由一個非齊次的特解和一個齊次的基本解組合而來。應用解析法的思想,邊值問題(9)轉化為兩個初值問題:



構造LS-SVM優化模型:

拉格朗日函數如下:

其中βk,αki是拉格朗日乘子,對變量求導得到KKT條件,之后消去變量w,ek,k=1,2,整理后得到線性方程組,詳細過程可以參考下一章。利用核函數標記(4)~(6),將線性方程組寫成矩陣形式:


為了避免大規模求解線性方程(16),給出如下變形:


對于高階線性常微分方程,將其轉化為一階的常微分方程組,構造LS-SVM模型求解,為了方便,稱此模型L-LS-SVM。具體過程如下:
給出類似于式(7)的m階線性時變系數常微分方程:

為了避免對核函數求高階導數,將上述線性常微分方程轉化為如下微分方程組:


構造拉格朗日函數:

其中βk,αki是拉格朗日乘子。
對拉格朗日函數求導數,得到KKT條件如下:

之后消去變量wk,ek,k=1,2,…,m,利用核函數標記(4)~(6),整理后得到如下矩陣:



這里Q=K+HGAT+GAHT+GAGAT為實對稱矩陣。把線性方程(21)分解成三個小的線性方程(22)并求解,得到問題(20)的近似解如下:


通過一個邊值問題和兩個高階初值問題的常微分方程來驗證L-LS-SVM方法的有效性,并和文獻[10]做了比較。MATLAB 2014a用于實現代碼,所有計算都在Intel-core i7-4790 CPU和8.00 GB RAM的Windows 7系統上進行。
例1考慮邊值問題線性常微分方程:

該邊值問題的精確解為y(t)=t4+t,利用疊加原理,把上述邊值問題轉化為兩個初值問題的微分方程:

并再次轉化為下面兩個微分方程組:

利用LS-SVM算法分別求出這兩個線性常微分方程組的近似解和,最終利用線性疊加性得到原問題的近似解
圖1是例1的數值實驗,在區間[0,1]內取10個等距的訓練點,圖1(a)為近似解和精確解實驗對比曲線,圖 1(b)為近似解和精確解的偏差值表1給出了訓練點多少對近似解精度的影響。

圖1 例1的數值實驗
兩個例子被給出驗證L-LS-SVM方法的有效性,并和文獻[10]中的方法做比較,說明兩種方法得到近似解精度相當,具體結果見下面的實驗和數據。
例2考慮二階時變系數的常微分方程:

:y′1=y2,y′2=t3,y(1)=2,y′(1)=1,
3
1ty2+

圖2 例2的數值實驗
圖2 是例2的數值實驗,在區間[1,2]內取10個等距的訓練點,圖2(a)為近似解和精確解在區間內外對比曲線,圖2(b)為近似解和精確解在區間內的偏差E(t)=。圖3當γ=1010時給出了核間隔參數σ對近似解精度的影響曲線。表1給出了訓練點多少對近似解精度的影響。文獻[10]中的方法是目前求近似解最好的方法,因此一個詳細的比較在表2中給出。

圖3 初值問題的核函數間隔參數σ的敏感性實驗

表1 訓練點多少對y(t)的MSE影響

表2 兩種方法誤差比較
例3考慮三階時變系數的常微分方程:

把上面的常微分方程轉化為微分方程組:

原方程的精確解析解為y(t)=t4。圖3當γ=1010時給出了核間隔參數σ對近似解精度的影響曲線。
圖4在區間[0,3]內取30個等距的訓練點,圖4(a)為近似解和精確解在區間內外對比曲線,圖4(b)為近似解和精確解在區間內的偏差E(t)=y(t)-yˉ(t),具體實驗數據以及與文獻[10]的比較在表2中給出。
對于高階線性常微分方程,應用LS-SVM方法求解時,需要對核函數求高階導數,為此將高階線性常微分方程轉化為一階線性微分方程組,構建LS-SVM模型去求解該線性微分方程組,從而避免了對核函數求高階導數。對于邊值問題,利用解析的方法將它轉化為兩個初值問題的微分方程組求解。實驗結果證明了L-LS-SVM方法的有效性,并和文獻[10]中的方法做比較,說明兩種方法得到近似解精度相當。將來該方法可以推廣求解任意階線性常微分方程組。

圖4 例3的數值實驗