最小二乘法曲線擬合畢業(yè)設(shè)計(jì)_第1頁
最小二乘法曲線擬合畢業(yè)設(shè)計(jì)_第2頁
最小二乘法曲線擬合畢業(yè)設(shè)計(jì)_第3頁
最小二乘法曲線擬合畢業(yè)設(shè)計(jì)_第4頁
最小二乘法曲線擬合畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、北京信息科技大學(xué) 畢業(yè)設(shè)計(jì)(論文) 題目 最小二乘法原理,VC+實(shí)現(xiàn)及應(yīng)用 學(xué)院 理學(xué)院 專業(yè) 信息與計(jì)算科學(xué) 學(xué)生姓名 班級/學(xué)號 指導(dǎo)老師/督導(dǎo)老師 起止時(shí)間: 年 月 日 至 年 月 日 39摘要摘 要最小二乘法(又稱最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù),是利用最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配的一種計(jì)算方法1,目前在測量學(xué)、城市道路規(guī)劃、物理學(xué)、地質(zhì)勘探學(xué)、概率論、統(tǒng)計(jì)學(xué)等領(lǐng)域有著廣泛的應(yīng)用。本文對最小二乘法進(jìn)行了深入細(xì)致的研究,利用Visual C+編制程序?qū)崿F(xiàn)最小二乘法的界面化設(shè)計(jì),通過實(shí)驗(yàn)數(shù)據(jù)的輸入,實(shí)現(xiàn)線性和二次擬合曲線的輸出,并利用設(shè)計(jì)的程序?qū)崿F(xiàn)了一些實(shí)際問題的求解和處理。朗

2、讀顯示對應(yīng)的拉丁字符的拼音 字典關(guān)鍵詞:最小二乘法;曲線擬合; Visual C+AbstractAbstract The least square method (also called the least-square method) is a kind of mathematical optimization technique, and it is a calculation method minimizing the error sum of squares to find the best function matching of the data, it has bee

3、n widely applied in the field of surveying , urban road planning, physics, geological exploration , science , probability theory and statistics etc. In this paper, we study the least square method carefully, and use Visual C+ program to realize the least square method of the interface design, throug

4、h the experiment data input, realize the output to the linear and secondary curve fitting, and use programs designed to achieve a number of practical problems solving and handling.Key words: The least square method; The curve fitting; Visual C+; 目錄目 錄摘 要Abstract第一章 概述1.1 最小二乘法簡介11.2 VC+的介紹及其應(yīng)用21.3 論

5、文的主要結(jié)構(gòu)安排3第二章 基本理論42.1 線性擬合曲線42.2 二次擬合函數(shù)52.3 多元線性擬合6第三章 最小二乘法曲線擬合的VC+實(shí)現(xiàn)93.1 程序?qū)崿F(xiàn)最小二乘法流程圖93.2 界面設(shè)計(jì)103.3 主要函數(shù)類143.4 程序設(shè)計(jì)中的問題15第四章最小二乘法的應(yīng)用164.1 測定銅絲的電阻溫度系數(shù)164.2 最小二乘法在道路中心線測量中應(yīng)用194.3 最小二乘法在工業(yè)純堿中鐵含量測定中的應(yīng)用214.4 應(yīng)用效果分析23結(jié)束語24參考文獻(xiàn)25 最小二乘法原理,VC+實(shí)現(xiàn)及應(yīng)用第1章 概述1.1 最小二乘法簡介最小二乘法是法國大數(shù)學(xué)家A.M.Legendre 最先于1805年發(fā)表的,其動(dòng)機(jī)是為

6、處理一類從天文學(xué)和測地學(xué)中提出的數(shù)據(jù)分析問題。它通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小3。最小二乘法還可用于曲線擬合,工程施工中,我們會(huì)經(jīng)常取得一些相關(guān)的數(shù)據(jù),這些數(shù)據(jù)往往來自與施工密切相關(guān)的測量或?qū)嶒?yàn)中,我們可以通過作圖或多段插值取得變量之間的聯(lián)系,但作圖和插值查圖往往誤差較大。這時(shí)可采用最小二乘法先擬合出一個(gè)多項(xiàng)式,再根據(jù)此多項(xiàng)式求解任一自變量所對應(yīng)的因變量較精確的結(jié)果,據(jù)此繪圖可得到較精確、較合理的曲線4。1801年,意大利天文學(xué)家朱賽普·皮亞齊發(fā)現(xiàn)了第一顆小行星谷神星2,經(jīng)過4

7、0天的跟蹤觀測后,由于谷神星運(yùn)行至太陽背后,使得皮亞齊失去了谷神星的位置。隨后全世界的科學(xué)家利用皮亞齊的觀測數(shù)據(jù)開始尋找谷神星,但是根據(jù)大多數(shù)人計(jì)算的結(jié)果來尋找谷神星都沒有結(jié)果。時(shí)年24歲的高斯也計(jì)算了谷神星的軌道。奧地利天文學(xué)家海因里希·奧爾伯斯根據(jù)高斯計(jì)算出來的軌道重新發(fā)現(xiàn)了谷神星。高斯使用的最小二乘法的方法發(fā)表于1809年他的著作天體運(yùn)動(dòng)論中。 法國科學(xué)家勒讓德于1806年獨(dú)立發(fā)現(xiàn)“最小二乘法”,但因不為世人所知而默默無聞。 勒讓德曾與高斯為誰最早創(chuàng)立最小二乘法原理發(fā)生爭執(zhí)5。 1829年,高斯提供了最小二乘法的優(yōu)化效果強(qiáng)于其他方法的證明,因此被稱為高斯-莫卡夫定理。最小二乘法

8、(又稱最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù)。它通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小。最小二乘法還可用于曲線擬合。其他一些優(yōu)化問題也可通過最小化能量或最大化熵用最小二乘法來表達(dá)6。最小二乘法作為函數(shù)逼近的一種重要方法,廣泛的應(yīng)用于物理學(xué)、測繪學(xué)、數(shù)值計(jì)算、大地測量學(xué)等。最小二乘法在19世紀(jì)初發(fā)明后,很快得到歐洲一些國家的天文和測地學(xué)工作者的廣泛使用7。據(jù)不完全統(tǒng)計(jì),自1805年至1864年的60年期間,有關(guān)這一方法的研究論文約250篇,一些百科全書,包括1837年出版的不列顛百科全書第7版,都收進(jìn)了有

9、關(guān)這個(gè)方法的介紹。在研究論文中,有一些是關(guān)于最小二乘估計(jì)的計(jì)算,這涉及解線性方程組。高斯也注意了這個(gè)問題,給出了正則方程的命名并發(fā)展了解方程的消去法。但是,在電子計(jì)算機(jī)出現(xiàn)以前,當(dāng)參數(shù)個(gè)數(shù)較大時(shí),計(jì)算任務(wù)很繁重8。1858年,英國為繪制本國地圖作了一次大型的測繪,其數(shù)據(jù)處理用最小二乘法涉及模型中,用兩組人員獨(dú)立計(jì)算,花了兩年半的時(shí)間才完成。1958年我國某研究所計(jì)算一個(gè)煉鋼方面的課題,涉及用最小二乘法解13個(gè)自變量的線性回歸,30余人用電動(dòng)計(jì)算機(jī)算,夜以繼日花了一個(gè)多月的時(shí)間9。勒讓德的工作沒有涉及最小二乘法的誤差分析問題。這一點(diǎn)由高斯在1809年發(fā)表的正態(tài)誤差理論加以補(bǔ)足。高斯的這個(gè)理論對于

10、最小二乘法之用于數(shù)理統(tǒng)計(jì)有極重要意義10。 本文介紹了最小二乘法在實(shí)際測量學(xué)中的應(yīng)用,以純堿中鐵含量的測定為例,碳酸鈉是鉆井液中常用的添加劑之一,主要用來調(diào)節(jié)PH值和對膨潤土進(jìn)行增效。鐵含量是評價(jià)碳酸鈉質(zhì)量的一項(xiàng)重要指標(biāo),其含量大小直接影響碳酸鈉的使用效果。測試碳酸鈉鐵含量的主要方法是鄰菲羅啉分光光度法,樣品溶液的吸光度隨鐵含量的不同呈線性變化。在曲線繪制的過程中,人為因素對實(shí)驗(yàn)數(shù)據(jù)的影響較大。運(yùn)用最小二乘法,對所測得的數(shù)據(jù)統(tǒng)計(jì)分析、處理后進(jìn)行線性加歸,可以較好地提高測試結(jié)果的準(zhǔn)確性與可靠性11。 1.2 VC+的介紹及其應(yīng)用Microsoft Visual C+(簡稱Visual C+、MS

11、VC、VC+或VC)微軟公司的C+開發(fā)工具,具有集成開發(fā)環(huán)境,可提供編輯C語言,C+及C+/CLI等編程語言。VC+整合了便利的出錯(cuò)工具,特別是整合了微軟視窗式設(shè)計(jì)(Windows API)、三維動(dòng)畫DirectX API,Microsoft .NET框架 。目前最新的版本是Microsoft Visual C+ 2010。Microsoft Visual C+以擁有“語法高亮”,InteriSense(自動(dòng)編譯功能)以及高級出錯(cuò)功能而著稱。比如,它允許用戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動(dòng)正在調(diào)試的程序。其編譯及建置系統(tǒng)以預(yù)編譯頭文件、最小重

12、建功能及累加連結(jié)著稱。這些特征明顯縮短程式編輯、編譯及連結(jié)的時(shí)間花費(fèi),在大型軟件計(jì)劃上尤其顯著。Visual Studio 是微軟公司推出的開發(fā)環(huán)境,Visual Studio 可以用來創(chuàng)建 Windows 平臺(tái)下的 Windows 應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和Office插件。VisualStudio是目前最流行的Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境。目前已經(jīng)開發(fā)到10.0版本,也就是 VisualStudio 201012。VC+包括了各種增強(qiáng)功能,例如可視化設(shè)計(jì)器(使用NET Framework 3.5加速開發(fā))、對Web開發(fā)工具的大量改進(jìn),以及能夠加

13、速開發(fā)和處理所有類型數(shù)據(jù)的語言增強(qiáng)功能。Visual Studio 2008為開發(fā)人員提供了所有相關(guān)的工具和框架支持,幫助創(chuàng)建引人注目的、令人印象深刻并支持AJAX的Web應(yīng)用程序。開發(fā)人員能夠利用這些豐富的客戶端和服務(wù)器端框架輕松構(gòu)建以客戶為中心的Web應(yīng)用程序,這些應(yīng)用程序可以集成任何后端數(shù)據(jù)提供程序、在任何當(dāng)前瀏覽器內(nèi)運(yùn)行并完全訪問ASP NET應(yīng)用程序服務(wù)和Microsoft平臺(tái)。 圖1 VC+6.0啟動(dòng)界面MFC是對WindowsAPI的封裝,大大簡化了我們的工作;學(xué)VC+主要就是要學(xué)MFC,大約有100多個(gè)類,但常用的也就二三十個(gè)。應(yīng)該像背4級單詞一樣將這些常用類搞懂;當(dāng)然不要死記

14、,要通過看幫助、看例子、動(dòng)手練習(xí)來學(xué)會(huì)它們;而且,并非每個(gè)類的內(nèi)部的所有函數(shù)都要學(xué)會(huì),要日積月累。如果真的想成為高手,做個(gè)筆記本把自己認(rèn)為重要的類、函數(shù)記下來,隨時(shí)學(xué)習(xí),也是很好的突擊方法。 1.3 論文的主要結(jié)構(gòu)安排論文的第二章詳細(xì)介紹最小二乘法的一些算法以及它們的推導(dǎo)過程;第三章利用VC+實(shí)現(xiàn)線性和二次曲線擬合算法;第四章利用設(shè)計(jì)的程序解決了一些實(shí)際應(yīng)用問題;最后為結(jié)束語。第二章 基本理論 本章將主要介紹最小二乘法曲線擬合,包括其公式的推導(dǎo)。對于最小二乘算法,本論文只進(jìn)行一些簡要的概述,簡單介紹三種:線性擬合、二次擬合函數(shù)、多元線性擬合。最小二乘法(又稱最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù),主要

15、的思想是通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小13。2.1 線性擬合曲線線性擬合在統(tǒng)計(jì)學(xué)上稱為線性回歸。設(shè),為一組已知觀測數(shù)據(jù),擬合函數(shù)為一直線,即 (1)其中為待定參數(shù),為誤差。 式(1)表示隨著的增加而線性增加或減少。按最小二乘法計(jì)算步驟,得各數(shù)據(jù)點(diǎn)的誤差平方和為 (2)對式(2)求的偏導(dǎo)數(shù),并使其等于0 (3)或 (4)這個(gè)方程組稱為正規(guī)方程組,用消元或克萊姆法則,可求得方程組的解 (5) 其中,分別稱為數(shù)據(jù)的平均值。令 則式(5)可寫成 (6) 稱為數(shù)據(jù)的方差,開平方后的稱為標(biāo)準(zhǔn)差:為間

16、的協(xié)方差,當(dāng)其為0時(shí)線性擬合函數(shù)不存在。求得后就可寫出具體的擬合函數(shù)表達(dá)式5。2.2 二次擬合函數(shù) 已知數(shù)據(jù),,用的二次多項(xiàng)式擬合變量,即 (7)其中為待定參數(shù),為誤差。為了計(jì)算方便,在解方程組時(shí)減少一個(gè)未知數(shù),由式(7)得到 (8)代入式(7)因此,有誤差平方和對求偏導(dǎo)數(shù),并使其等于0 (9)整理得到正規(guī)方程組 (10)或 (11)解此方程組,得到,再代入式(8)得,因而求得在最小二乘意義下的二次擬合函數(shù)5。2.3 多元線性擬合 多元線性擬合在統(tǒng)計(jì)學(xué)上稱為多元線性回歸,它表示一個(gè)變量受多個(gè)因素的影響。設(shè)變量和有組觀測數(shù)據(jù)關(guān)于的擬合函數(shù)為線性,即其中參數(shù)也是由最小二乘法確定,即要求因此應(yīng)該滿足

17、 (12)由式(12)中的第一式可得 (13)將式(13)代入(12)中的第二偏導(dǎo)數(shù),可得 (14) (15)稱之為與,與之間的協(xié)方差,它們表示彼此間現(xiàn)行相關(guān)的大小。若,表示與,與為線性正相關(guān);否則為線性負(fù)相關(guān),表示增加而(或)減少。當(dāng)時(shí)的方差,因此式(14)可寫成 (16)這是由個(gè)方程求解的個(gè)未知數(shù)的方程組可用高斯-約當(dāng)消去法求解方程組(16)可以寫成矩陣形式 (17)其中矩陣稱為協(xié)方差矩陣。由于,因此協(xié)方差矩陣是對稱的。 令 ,其中為的方差, 則式(16)和(17)可以分別寫成 (18)和 (19)其中 , (20)分別稱為與,與的相關(guān)系數(shù),表現(xiàn)相互間線性相關(guān)的程度。,。當(dāng)為正相關(guān);當(dāng)為負(fù)

18、相關(guān),越接近1,則線性相關(guān)越好;越接近于0,則線性關(guān)系越弱。 由方程(16)和(17)求解比較直觀,計(jì)算較為簡單。由方程(18)和(19)求解較為復(fù)雜,但計(jì)算誤差較小,計(jì)算后由 (21)求得,再由式(13)計(jì)算,得到線性擬合函數(shù)的具體表達(dá)式 (22) 如果試驗(yàn)是要通過的測量來尋找經(jīng)驗(yàn)公式,則還應(yīng)判別由上述擬合所得的方程是否恰當(dāng)。這可由的相關(guān)系數(shù)來判別6: 第三章 最小二乘法曲線擬合的VC+實(shí)現(xiàn) 在這一章,我們將把最小二乘法曲線擬合在VC+的平臺(tái)上實(shí)現(xiàn)出來,利用其可視化界面,給曲線擬合帶來便利。3.1 程序?qū)崿F(xiàn)最小二乘算法及流程圖 根據(jù)上一章2.1節(jié)總結(jié)出最小二乘線性擬合算法的具體步驟為:步1.

19、 由方差公式求偏導(dǎo)獲得方程組 步2.輸入數(shù)據(jù)獲得矩陣步3.計(jì)算A的轉(zhuǎn)置矩陣步4. ,解方程組獲得系數(shù)步5. 計(jì)算步6. 輸出運(yùn)算結(jié)果根據(jù)以上步驟總結(jié)出算法流程圖如下: 開始輸入擬合次數(shù)T,坐標(biāo)點(diǎn)數(shù)N,輸入x,y坐標(biāo)獲得矩陣A計(jì)算x,y平均值獲得A矩陣的逆矩陣BB獲得矩陣C計(jì)算相關(guān)系數(shù)解方程組 獲得系數(shù)輸出結(jié)束圖2 系統(tǒng)流程圖3.2 界面設(shè)計(jì)所有的算法是在VC+6.0下設(shè)計(jì)的,我們只需運(yùn)行程序,在視圖中將顯示結(jié)果.所有的操作請參看下圖:圖3 程序界面 查看版本信息圖4 幫助信息選擇菜單曲線擬合下的輸入?yún)?shù),將彈出輸入?yún)?shù)對話框,如圖: 圖5 選擇功能 運(yùn)行程序,點(diǎn)擊“曲線擬合”,選擇“輸入?yún)?shù)”

20、(必輸項(xiàng))。圖6參數(shù)窗口 參數(shù)窗口中,“輸入值”,為擬合次數(shù),必錄項(xiàng)(整型),即:時(shí),擬合曲線為線性一次函數(shù)。時(shí),擬合曲線為二次函數(shù)形式。 “輸入值”,為將要進(jìn)行擬合的離散點(diǎn)數(shù)量,必錄項(xiàng)(整型),離散點(diǎn)數(shù)量越多,擬合出的曲線更加精確。 “輸入坐標(biāo)”,每個(gè)數(shù)據(jù)點(diǎn)的坐標(biāo)值(浮點(diǎn)型),空格隔開。數(shù)量根據(jù)值確定。 “輸入坐標(biāo)”,每個(gè)數(shù)據(jù)點(diǎn)的坐標(biāo)值(浮點(diǎn)型),空格隔開。數(shù)量根據(jù)值確定。 在輸入完參數(shù)值后,點(diǎn)擊“確定”按鈕,得到返回值窗口。圖7 運(yùn)算結(jié)果 實(shí)際使用中,可能出現(xiàn)對第一次擬合結(jié)果不滿意,因此添加修改值欄:圖8修改T值 點(diǎn)擊修改值,出現(xiàn)如下窗口:圖9輸入數(shù)值 此時(shí)只需輸入要擬合的次數(shù),不需要再次

21、輸入其他參數(shù)值。圖10運(yùn)算結(jié)果3.3 主要函數(shù)類 在VC+程序設(shè)計(jì)語言中所有程序均由函數(shù)組成,函數(shù)是VC+程序編譯的基本單位。VC+函數(shù)通常分為自定義函數(shù)與庫函數(shù)。主函數(shù)是用戶自定義的函數(shù),所有函數(shù)都由函數(shù)類型、名稱、參數(shù)和函數(shù)體四個(gè)部分組成。 class LeastSquare public:int N;int T;float xishu;public:LeastSquare();virtual LeastSquare();float pow_n(float a,int n);/a的n次方void mutiple(float *a,float *b,float *c); /矩陣A×

22、矩陣B=矩陣Cvoid matrix_trans(float *a,float *b);/矩陣B=矩陣A的轉(zhuǎn)置void init(float *x_y,float x,float y,int n);/n組坐標(biāo)點(diǎn)的數(shù)組void get_A(float *matrix_A,float *x_y,int n);/得到矩陣Avoid print_array(float *arr,int n);/輸出矩陣void convert(float *argu,int n);/將方程組轉(zhuǎn)化為上三角方程組void compute(float *argu,int n,float root);/解方程組void ge

23、t_y(float *trans_A,float *x_y,float y,int n); void cons_formula(float *coef_A,float y,float *coef_form);void print_root(float a,int n);void process(float x_point,float y_point,float result);void setN(int n);void setT(int t);float getXiShu(float x_point,float y_point);/獲得相關(guān)系數(shù);變量定義用途int N離散點(diǎn)個(gè)數(shù)fnt T擬合次

24、數(shù)float xishu誤差系數(shù)float *a 定義afloat *b定義bfloat *c定義cfloat *coef_A系數(shù)矩陣Afloat x_pointx系數(shù)表1 函數(shù)變量聲明3.4 程序設(shè)計(jì)中的問題下面我們來總結(jié)一下程序設(shè)計(jì)中的一些問題,以及未實(shí)現(xiàn)的算法: 修改T值之后,重復(fù)調(diào)用算法。 輸入坐標(biāo)點(diǎn)時(shí),若輸入為字母,應(yīng)提示錯(cuò)誤,功能未實(shí)現(xiàn)。 坐標(biāo)點(diǎn)輸入過程中,輸入坐標(biāo)點(diǎn)個(gè)數(shù)不足時(shí),未能提示信息。 特殊形式的函數(shù)如指數(shù)函數(shù),對數(shù)函數(shù)的擬合未實(shí)現(xiàn)。 程序只能完成一次、二次函數(shù)擬合可繼續(xù)修改完善程序方便使用。第四章 最小二乘法的應(yīng)用上一章我們介紹了最小二乘法的VC+編程實(shí)現(xiàn),在這章,我們利

25、用最小二乘法和編制的程序來處理幾個(gè)實(shí)際的問題,簡要展示一下程序功能。4.1 測定銅絲的電阻溫度系數(shù) 以惠斯通電橋測定銅絲在不同溫度下的電阻值試驗(yàn)為例,簡要說明程序的實(shí)用性。 任何物質(zhì)的電阻都與溫度有關(guān),多數(shù)金屬的電阻隨溫度升高而增大,有如下關(guān)系:,式中、分別是t、O時(shí)金屬的電阻值,是電阻溫度系數(shù),其單位是-1。一般與溫度有關(guān),但對于實(shí)驗(yàn)用的純銅材料來說,在-50100的范圍內(nèi),的變化非常小,可當(dāng)作常數(shù),即與呈線性關(guān)系14,下表為實(shí)驗(yàn)采集數(shù)據(jù):銅絲溫度-電阻數(shù)據(jù)表序號溫度t / 電阻R/125.1 21.34232.021.91340.122.58447.0 23.15554.0 23.7366

26、0.8 24.27767.124.80873.725.32表2 銅絲電阻實(shí)驗(yàn)采集數(shù)據(jù)圖11數(shù)據(jù)點(diǎn)示意 根據(jù)離散點(diǎn)分布情況判斷出,曲線大致走向類似于直線,則采用直線擬合:25.121.34-24.875-2.53563.058125618.76566.42622532.021.91-19.75-1.96538.80875390.06253.86122540.122.58-9.875-1.29512.78812597.515631.67702547.0 23.15-2.975-0.7252.1568758.8506250.52562554.0 23.734.025-0.145-0.58362516

27、.200630.02102560.8 24.2710.8250.3954.275875117.18060.15602567.124.8017.1250.92515.840625293.26560.85562573.725.3223.7251.44534.282625562.87562.088025399.8187.1-1.775-3.9170.6273752104.71715.6108表3 運(yùn)算數(shù)據(jù)計(jì)算過程: 記 平均值記:則正規(guī)方程組為:其中 將上式數(shù)據(jù)代入方程組得:解得: 下面我們利用程序解決計(jì)算問題,將參數(shù)輸入到程序中運(yùn)算:圖12參數(shù)值輸入圖13 銅絲電阻實(shí)驗(yàn)擬合結(jié)果根據(jù)程序運(yùn)算結(jié)果輸入

28、的曲線,利用Maple繪圖軟件畫出相應(yīng)的曲線走向:圖14 擬合曲線和離散點(diǎn)繪圖表示試驗(yàn)數(shù)據(jù)線性良好。根據(jù)比較可直觀的看出銅絲電阻值隨溫度增加的變化,程序計(jì)算出的曲線方程很好的展示出了電阻值的變化規(guī)律。4.2 最小二乘法在道路中心線測量中應(yīng)用 道路中心線是由一系列線路轉(zhuǎn)折點(diǎn)組成的,路線中線的平面集合線形由直線和曲線組成, 由于測量往往存在誤差, 所以需要對測得的數(shù)據(jù)進(jìn)行處理, 使所測設(shè)的曲線是一條光滑連續(xù)的曲線。一般對曲線的處理方法有插值和擬合兩種11。插值是目前常用的一種方法, 利用三次樣條插值法、拋物線加權(quán)平均法和張力樣條函數(shù)插值法都可以很好地解決這一問題, 但計(jì)算量非常大。利用基于最小二乘

29、法原理的曲線擬合對線性進(jìn)行設(shè)計(jì), 可達(dá)到同樣的目的, 且計(jì)算結(jié)果更為簡便。測量得到實(shí)際數(shù)據(jù)【16】: X0.511.522.53Y1.752.453.814.807.008.60表4實(shí)際測量數(shù)據(jù)將數(shù)據(jù)輸入到程序中:圖15輸入?yún)?shù)圖16 曲線擬合結(jié)果 圖17 函數(shù)曲線示意道路中心勘測通過計(jì)算道路中心線各點(diǎn)樁號坐標(biāo),用這些離散點(diǎn)進(jìn)行擬合大致走向,為施工帶來一定的參考價(jià)值。4.3 最小二乘法在工業(yè)純堿中鐵含量測定中的應(yīng)用鐵含量是工業(yè)碳酸鈉的一個(gè)重要質(zhì)量指標(biāo), 其含量高低直接決定著純堿質(zhì)量及其使用性能。鄰菲羅啉分光光度法是測定碳酸鈉中微量鐵含量的經(jīng)典方法, 樣品溶液的吸光度隨鐵離子濃度的增大而呈上升趨

30、勢18。平時(shí)我們在實(shí)驗(yàn)過程中會(huì)遇到兩量如果存在的線性關(guān)系時(shí),其中為線性函數(shù)的參數(shù)。當(dāng)實(shí)驗(yàn)數(shù)據(jù)存在這種線性關(guān)系時(shí),通常我們運(yùn)用作圖法對其參數(shù)進(jìn)行處理運(yùn)算、進(jìn)而求出實(shí)驗(yàn)結(jié)果。但是作圖法很難得到好的結(jié)果,而運(yùn)用最小二乘法可以得到比較好的線性擬合19。對其兩種方法比較可以最小二乘法的數(shù)據(jù)處理方法是比較理想的辦法。本文運(yùn)用作圖法和最小二乘法對工業(yè)純堿中鐵含量的測定的數(shù)據(jù)進(jìn)行處理,得出運(yùn)用最小二乘法可以得到誤差比較小的鐵含量。在曲線繪制的過程中,人為因素對實(shí)驗(yàn)數(shù)據(jù)的影響較大。運(yùn)用最小二乘法,對所測得的數(shù)據(jù)統(tǒng)計(jì)分析、處理后進(jìn)行線性加歸,可以較好地提高測試結(jié)果的準(zhǔn)確性與可靠性【20】。根據(jù)實(shí)驗(yàn)數(shù)據(jù)列以下表格:

31、序號1234567鐵標(biāo)準(zhǔn)溶液體積(mL)0.01.02.04.06.08.010.0含鐵質(zhì)量(mg)0.000.010.020.040.060.080.10吸光度0.0000.0700.1260.2500.3750.5360.630表5 實(shí)驗(yàn)數(shù)據(jù)收集 要使繪制的曲線盡可能圓滑并且盡可能經(jīng)過所有的點(diǎn),但是根據(jù)所測數(shù)據(jù)據(jù)繪出的曲線并不呈線性回歸,所以只能主觀的繪制一條平滑的曲線,根據(jù)直線經(jīng)過的點(diǎn),代入公式中求得和。圖18離散點(diǎn)示意圖 根據(jù)剛剛繪制的離散點(diǎn)圖,這些點(diǎn)大致在一條直線上,我們可以認(rèn)為變量和變量的關(guān)系是線性的,由此可以設(shè)其中和 是待定系數(shù),根據(jù)最小二乘法提供的公式我們可以將已知數(shù)據(jù)輸入程序

32、計(jì)算:圖19參數(shù)輸入圖20 曲線擬合結(jié)果根據(jù)程序運(yùn)算結(jié)果,在Maple繪圖軟件中畫出圖像:圖21 實(shí)驗(yàn)數(shù)據(jù)擬合效果圖 將所求得數(shù)據(jù)代入公式可以求出 和,得到這樣給出為鐵的含量,代表吸光度,由(吸光度)進(jìn)而求解為0.013、0.014(鐵的含量)。4.4 應(yīng)用效果分析 我們選取了代表數(shù)據(jù),初步分析 、處理代入最小二乘法的計(jì)算公式中,求得經(jīng)驗(yàn)公式。進(jìn)而求得回歸方程,減小了誤差,使我們的測試數(shù)據(jù)更加科學(xué)合理化。 在這里我們利用最小二乘法只是解決了幾個(gè)應(yīng)用實(shí)例,對于在以后的監(jiān)測數(shù)據(jù)中只要兩個(gè)變量成線性相關(guān)我們都可以用最小二乘法,利用最小二乘法可以把實(shí)驗(yàn)誤差減小到最小,提高實(shí)驗(yàn)數(shù)據(jù)的準(zhǔn)確度與可靠性。以此

33、我們可以利用最小二乘法編程,設(shè)計(jì)成計(jì)算機(jī)軟件,這樣只需將我們測得的數(shù)據(jù)輸入計(jì)算機(jī)中就可以得出經(jīng)驗(yàn)公式,進(jìn)而求得未知量。結(jié)束語當(dāng)今最小二乘法已經(jīng)廣泛的應(yīng)用于各類學(xué)科,成為了不可缺少的重要工具。目前在物理學(xué)、地質(zhì)勘探學(xué)、概率論、統(tǒng)計(jì)學(xué)等領(lǐng)域有著重要的應(yīng)用。而最小二乘法曲線擬合的出現(xiàn),又使得圖像呈現(xiàn)更加直觀,程序代碼簡單,使用方便,已經(jīng)成為研究人員開展科研工作的有效工具之一。在做完了這篇論文后,學(xué)習(xí)到了許多新的知識(shí)。對于最小二乘法有了深一步的認(rèn)識(shí),了解了它的計(jì)算原理以及對于現(xiàn)在的測量估算上的意義,并對VC+也有了重新的認(rèn)識(shí),感受到了VC+在現(xiàn)代科技中的重要地位。在完成論文的過程中遇到了許許多多的困難

34、,比如程序上的不完善,算法中的疑惑。經(jīng)過了一次次的更改,才逐漸的完成了這篇論文。在畢業(yè)設(shè)計(jì)的過程中,學(xué)到了許多新的知識(shí),在查閱資料的過程中獲得了不少的收獲:1對于最小二乘法了解,嘗試著用最小二乘法手工計(jì)算數(shù)據(jù)的時(shí)候,明顯的感覺到其中的繁瑣及復(fù)雜。但是通過計(jì)算機(jī)編程實(shí)現(xiàn)算法的時(shí)候,不管是從計(jì)算量上還是時(shí)間上,都深切的體會(huì)到了編程實(shí)現(xiàn)算法的效率性和實(shí)用性。2在使用Visual C+的時(shí)候,開始對其一無所知。在設(shè)計(jì)程序的過程中,許多操作無 法實(shí)現(xiàn)。于是開始查閱資料,從圖書館借書或者詢問同學(xué)。在此過程中,提高了自己對VC+編程的理解。3對Word及Excel的使用變得更加的熟練,在設(shè)計(jì)文體結(jié)構(gòu)以及布局

35、方面上有了新的認(rèn)識(shí)。 之后的論文在聞老師的逐步建議以及要求下進(jìn)行修改,直到論文邏輯的嚴(yán)謹(jǐn)性漸漸地完善,經(jīng)過老師指導(dǎo),對論文格式的重要性有了更深刻認(rèn)識(shí)。在此也要感謝我的導(dǎo)師聞小永老師在這幾個(gè)月間對我的幫助與耐心的指導(dǎo)。感謝李豐同學(xué)在Maple軟件圖形繪制過程中給予的幫助。 但是其中還是有許多的不足之處,由于對于VC+編程的不熟練使用,在對某些特定形式的函數(shù)曲線進(jìn)行擬合這一過程中無法實(shí)現(xiàn),導(dǎo)致程序不是很完善。在今后,還是要更加的努力,爭取將此部分在不久之后實(shí)現(xiàn)出來。參考文獻(xiàn)1 余介石.高等數(shù)學(xué).高教出版社D,1959.2 任雪娟.計(jì)算方法.氣象出版社M,2009.3.3 蘭燕娜.基于VB語言實(shí)現(xiàn)最

36、小二乘法直線擬合J.南通大學(xué)理學(xué)院.長江大學(xué)學(xué)報(bào)(自然科學(xué)版).2011,(06):09-034 陳良澤.用矩陣實(shí)現(xiàn)曲線擬合中的最小二乘法J.傳感器技術(shù).2001.(02):030-025 鄒樂強(qiáng).最小二乘法原理及其簡單應(yīng)用J.河南工程技術(shù)學(xué)校.科技信息2010.(03):045-046 高盼.基于最小二乘法的道路平面曲線擬合J.測繪信息與工程 2011.(02):019-037 鄒占勇.基于最小二乘法分析第三產(chǎn)業(yè)對國民總收入影響J.經(jīng)濟(jì)研究導(dǎo)刊 2011.(28):0007-028 張亞軍,陳立新.最小二乘法和熔絲編程J.測繪信息與工程 2012.(02):015-049 唐妍霞.用最小二乘

37、法解決的一個(gè)物理問題J.河北北方學(xué)院學(xué)報(bào) 2012.(01):008-0410吳建民,陶菊春.一元線性回歸問題的改進(jìn)方法J.甘肅農(nóng)業(yè)大學(xué)學(xué)報(bào) 1992.(03):232-23611鄭健,楊洪國,馬婷婷.測量平差與最小二乘法在工程測量中的應(yīng)用J.四川建筑,2010,30(1):177-17812賈小勇,徐傳勝,白欣.最小二乘法創(chuàng)立及其思想方法J.西北大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,36(3):507-51113米海珍,周鳳璽,楊文俠.黃土濕陷系數(shù)的偏最小二乘回歸分析與模型J.蘭州理工大學(xué)學(xué)報(bào),2004,30(2):110-11214羅海明.最小二乘法在伏安法測電阻實(shí)驗(yàn)中的應(yīng)用J. 東北林業(yè)大學(xué)

38、,2012,25(2):088-0315徐傳勝,白欣.切比雪夫的最小二乘法插值理論研究J. 首都師范大學(xué)學(xué)報(bào)(自然科學(xué)版),201,32(5):7-1016任紅萍,程玉民,張武.改進(jìn)的移動(dòng)最小二乘插值法研究J. 工程數(shù)學(xué)學(xué)報(bào),2010,27(06):1021-102817 2012-5-2418 2012-5-2419Jinsiang Shaw,Noniterative solution of inverse problems by the linear least square method.Applied Mathematical Modelling 25(2001) 683-69620P

39、radova V,Walczak B,Massart DL,et al.A comparison of two algorithms for warping of analytical signalsJ.Analytical Chimica Acta,2001,450:131-141北京信息科技大學(xué)畢業(yè)設(shè)計(jì)(論文)附錄題目 學(xué)院 專業(yè) 學(xué)生姓名 班級/學(xué)號 指導(dǎo)老師/督導(dǎo)老師 起止時(shí)間 至 附件A 程序源代碼:算法程序:#include "stdafx.h"#include "CurveFitting.h"#include "LeastSqua

40、re.h"#include "math.h"#define W 1/權(quán)函數(shù)#define PRECISION 0.00001/精度#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endifLeastSquare:LeastSquare()LeastSquare:LeastSquare()float LeastSquare:pow_n(float a,int n) /a的n次方 int i; if(n=0) return(1); float res=a;

41、for(i=1;i<n;i+) res*=a; return(res); void LeastSquare:mutiple(float *a,float *b,float *c) /矩陣A×矩陣B=矩陣C float res=0; int i,j,k; for(i=0;i<T+1;i+) for(j=0;j<T+1;j+) res=0; for(k=0;k<N;k+) res+=aik*bkj; cij=res; void LeastSquare:matrix_trans(float *a,float *b) /矩陣B=矩陣A的轉(zhuǎn)置 int i,j; for(

42、i=0;i<N;i+) for(j=0;j <T+1;j+) bji=aij; void LeastSquare:init(float *x_y,float x,float y,int n) /n組坐標(biāo)點(diǎn)的數(shù)組 int i;for(i=0;i<n;i+)x_yi0=xi; x_yi1=yi;void LeastSquare:get_A(float *matrix_A,float *x_y,int n) /得到矩陣A int i,j; for(i=0;i<N;i+) for(j=0;j<T+1;j+) matrix_Aij=W*pow_n(x_yi0,j); voi

43、d LeastSquare:print_array(float *arr,int n)/輸出矩陣 int i,j; for(i=0;i<n;i+) for(j=0;j<T+1;j+) printf("%g ",arrij); printf( "n"); void LeastSquare:compute(float *argu,int n,float root) /解方程組 int i,j; float temp; for(i=n-1;i>=0;i-) temp=arguin; for(j=n-1;j> i;j-) temp-=ar

44、guij*rootj; rooti=temp/arguii; void LeastSquare:get_y(float *trans_A,float *x_y,float y,int n) int i,j; float temp; for(i=0;i<n;i+) temp=0; for(j=0;j<N;j+) temp+=trans_Aij*x_yj1; yi=temp; void LeastSquare:cons_formula(float *coef_A,float y,float *coef_form) int i,j; for(i=0;i<T+1;i+) for(j=

45、0;j<T+2;j+) if(j=T+1) coef_formij=yi; else coef_formij=coef_Aij; void LeastSquare:print_root(float a,int n) int i,j; printf("擬合曲線方程為:ny(x)=%g",a0); for(i=1;i<n;i+) printf( "+%g",ai); for(j=0;j<i;j+) printf("*X"); printf("n"); float LeastSquare:getXiSh

46、u(float x_point,float y_point)float xx = 0.0;/x坐標(biāo)均值float yy = 0.0;/y坐標(biāo)均值float xx1 = 0.0;float yy1 = 0.0;float xx2 = 0.0;float yy2 = 0.0;float xy1 = 0.0;float xy2 = 0.0;float res = 0.0;for(int i = 0; i < N; i+)xx1 += x_pointi;yy1 += y_pointi;xx = xx1/N;/均值yy = yy1/N;xx1= 0.0;yy1 = 0.0;for(i = 0; i

47、 < N; i+)xy1 += (x_pointi - xx)*(y_pointi - yy);xx2 += (x_pointi - xx)*(x_pointi - xx);yy2 += (y_pointi - yy)*(y_pointi - yy);/CString s;/s.Format(_T("%f %f %f %f"), xx1, yy1, xx2, yy2);/AfxMessageBox(s);xy2 = sqrt(xx2)*sqrt(yy2);res = xy1/xy2;return res;void LeastSquare:process(float x_point,float y_point,float result) float *x_y = NULL; /創(chuàng)建指針,賦空值float *matrix_A = NULL;float *trans_A = NULL;float *coef_A = NULL;float *coef_formu = NULL;float *y = NULL;x_y = new float*N;for(int i=0; i<N;i+)x_yi = new float2;matr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論