馬慶巖
0引言
可視化技術越來越廣泛的應用于數據分析及數據后處理領域。在企業經營活動中,由于數據采集時間間隔大難以看出圖形變化的趨勢,更無法和設計的數據進行比較。為了分析、研究這些數據, 人們總是希望能夠建立起數學模型來表示自變量和因變量之間的關系。目前常見的曲線擬合方法有兩種: 第一種采用最小二乘擬合的方法; 第二種是三次樣條插值法。在曲線表現方面,目前基于.NET技術的圖形有MSChart,XtraCharts等商業控件,但占用系統資源較多,操作復雜,維護起來不方便。與以上這些商業控件比,選擇基于.NET的開源圖形組件ZedGraph作為曲線表現形式的載體,ZedGraph具有開發方便,占用資源小等特點。同時運用開源算法ALGLIB提供的豐富的計算方法,求解得到試驗數據的擬合曲線。
1ZedGraph組件介紹
1.1 ZedGraph概述
ZedGraph是一個用.NET編寫的開源類庫, 用于繪制任意數據集的二維線型、條型、餅型圖表,可作為WinForm窗體控件,也可用作ASP.NET Web控件, 支持.NET1.1和.NET2.0。
ZedGraph以其簡潔、方便、功能強大和開源等特點正在成為程序開發中廣泛使用的圖表組件[1]。ZedGraph的類庫具有很高的靈活性,幾乎圖表的每個層面都可以被用戶修改。同時,為了保證類庫的易用性,所有的圖表屬性都提供了缺省值。類庫中包含的代碼可以根據被劃分的數據來選擇適應的比例范圍和步長、尺寸。ZedGraph繼承了Framework中的UserControl接口,所以允許用戶在VS的IDE環境中進行拖放操作。增加了對其它語言的訪問接口支持,如C++,VB。
1.2 ZedGraph組成
MasterPane:從PaneBase繼承,一個可以操縱多個GraphPane對象類。當能直接為單個面板所使用時, MasterPane類的就無需使用的了。同時提供了布局、排列和操作單個GraphPane對象的方法。
GraphPane:圖表的主要類,從PaneBase繼承,作為屬性包含所有其他的類。可以改變面板的標題,框架和軸以及背景圖等。
PointPairList:是一個集合類,是PointPair對象的集合,是一個包含( X , Y) 的坐標類。
2擬合曲線方法概述
2.1最小二乘法
最小二乘法(又稱最小平方法)是一種數學優化技術,首先是由Karl Gauss在進行行星軌道預測的研究過程中提出的。現在,最小二乘理論已經變成從實驗數據來進行參數估計的主要手段[2]。最小二乘法被廣泛采用的原因是這個方法與其他方法相比容易理解,并且不需要數理統計的知識,甚至在其他方法失敗時,最小二乘法也可以提供解答。由最小二乘法獲得的估計在一定條件下有最佳的統計特性:一致性、無偏性和有效性。
2.2 ALGLIB介紹
ALGLIB是一個跨平臺的數值分析和數據處理函數庫。ALGLIB函數庫包括開源版本和商業版本,并支持多種編程語言,可以在多個操作系統平臺上運行,如:Windows,Linux和Solaris。ALGLIB有以下功能:
①線性代數(包括矩陣分析);②方程求解(線性和非線性);③插值;④最優化;⑤快速傅里葉變換;⑥數值積分;⑦線性和非線性最小二乘擬合;⑧常微分方程求解;⑨數據分析(分類、回歸、神經網絡)⑩統計(描述統計、假設檢驗)。
3基于ZedGraph組件的曲線擬合
3.1 擬合曲線產生流程
發動機在試驗及測試過程中產生了大量的數據,將這些采集的數據按試驗類型—型號—編號—裝配—試車導入到試驗數據管理系統中,對于需要擬合的數據進行分類處理,根據用戶的選擇運用ALGLIB函數庫,調用二次擬合或三次擬合算法,將散點的數據轉換成具有一定趨勢的擬合數據,調用ZedGraph組件將擬合數據用平滑的曲線連接,生成圖形。
3.2 擬合曲線代碼實現
3.2.1 初始化控件
在解決方案瀏覽窗口上,右鍵點擊“引用”選擇“添加引用”,選擇“瀏覽”標簽,選擇已經下載好的“ZedGraph.dll”和“alglib.dll”。
3.2.2 數據庫連接并查詢
對數據庫進行連接,并對數據庫中的數據進行查詢。
3.2.3 調用ALGLIB擬合算法生成圖形
調用ALGLIB算法中二次擬合算法,生成TwinRalateFit方法供ZedGraph組件調用。
private bool TwinRelateFit(double[] xSrc, double[] ySrc, ref double[] c, ref double[] xFit, ref double[] yFit){
…… ……
//調用ALGLIB中二次擬合曲線方法
alglib.lsfit.lsfitlinearw(y, w, FMatrix, n, LINEAR_ORDER, ref info, ref coe, repLineFit);
…… ……}
調用TwinRalateFit方法,將擬合數值返回到xFit和yFit數組中,并生成圖形。
4實例分析
以某企業分析某鍋爐燃燒問題為例,高溫、高速、高壓的燃氣推動鍋爐做功。出口流場的好壞,直接影響鍋爐的效率。要想真實地了解鍋爐參數的分布情況,將采集的數據直接輸入界面上表格所示:
通過數據調用ALGLIB二次擬合方法,生成二次擬合曲線。
5結論
本文給出了一種基于開源的曲線擬合技術。試驗結果表明:該算法簡化了擬合曲線生成工序,減少生成曲線預處理時間,有效提高曲線的生成效率,并能實時查看曲線上各點的數值。
參考文獻:
[1]于國卿.李趁趁.趙雨森. ZedGraph控件在水閘監測系統開發中的應用研究[J].南水北調與水利科技,2008,6(3):43-45.
[2]馬自萍.汪麗洪. 遺傳算法中參數變化對曲線擬合結果的影響[J]. 寧夏工程技術, 2009, 8(1): 52 - 54.