最小二乘法原理,vc++實(shí)現(xiàn)及應(yīng)用畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)設(shè)計(jì)(論文)</b></p><p>  題目 最小二乘法原理,VC++實(shí)現(xiàn)及應(yīng)用 </p><p>  學(xué)院 理學(xué)院 </p><p>  專業(yè) 信息與計(jì)算科學(xué)

2、 </p><p>  學(xué)生姓名 班級(jí)/學(xué)號(hào) </p><p>  指導(dǎo)老師/督導(dǎo)老師 </p><p>  起止時(shí)間: 年 月 日 至 年

3、 月 日 </p><p><b>  摘 要</b></p><p>  最小二乘法(又稱最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù),是利用最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配的一種計(jì)算方法[1],目前在測(cè)量學(xué)、城市道路規(guī)劃、物理學(xué)、地質(zhì)勘探學(xué)、概率論、統(tǒng)計(jì)學(xué)等領(lǐng)域有著廣泛的應(yīng)用。本文對(duì)最小二乘法進(jìn)行了深入細(xì)致的研究,利用Visual C++編制程序?qū)?/p>

4、現(xiàn)最小二乘法的界面化設(shè)計(jì),通過(guò)實(shí)驗(yàn)數(shù)據(jù)的輸入,實(shí)現(xiàn)線性和二次擬合曲線的輸出,并利用設(shè)計(jì)的程序?qū)崿F(xiàn)了一些實(shí)際問(wèn)題的求解和處理。</p><p><b>  朗讀</b></p><p>  顯示對(duì)應(yīng)的拉丁字符的拼音</p><p><b>  字典</b></p><p>  關(guān)鍵詞:最小二乘法;曲線

5、擬合; Visual C++</p><p><b>  Abstract</b></p><p>  The least square method (also called the least-square method) is a kind of mathematical optimization technique, and it is a calculati

6、on method minimizing the error sum of squares to find the best function matching of the data, it has been widely applied in the field of surveying , urban road planning, physics, geological exploration , science , probab

7、ility theory and statistics etc. In this paper, we study the least square method carefully, and use Visual C++ program to realize the least square </p><p>  Key words: The least square method; The curve fitt

8、ing; Visual C++; </p><p><b>  目 錄</b></p><p><b>  摘 要Ⅰ</b></p><p>  AbstractⅡ</p><p><b>  第一章 概述Ⅲ</b></p><p>  1

9、.1 最小二乘法簡(jiǎn)介1</p><p>  1.2 VC++的介紹及其應(yīng)用2</p><p>  1.3 論文的主要結(jié)構(gòu)安排3</p><p>  第二章 基本理論4</p><p>  2.1 線性擬合曲線4</p><p>  2.2 二次擬合函數(shù)5</p><p>  2.3

10、 多元線性擬合6</p><p>  第三章 最小二乘法曲線擬合的VC++實(shí)現(xiàn)9</p><p>  3.1 程序?qū)崿F(xiàn)最小二乘法流程圖9</p><p>  3.2 界面設(shè)計(jì)10</p><p>  3.3 主要函數(shù)類14</p><p>  3.4 程序設(shè)計(jì)中的問(wèn)題15</p><p&

11、gt;  第四章最小二乘法的應(yīng)用16</p><p>  4.1 測(cè)定銅絲的電阻溫度系數(shù)16</p><p>  4.2 最小二乘法在道路中心線測(cè)量中應(yīng)用19</p><p>  4.3 最小二乘法在工業(yè)純堿中鐵含量測(cè)定中的應(yīng)用21</p><p>  4.4 應(yīng)用效果分析23</p><p><b&

12、gt;  結(jié)束語(yǔ)24</b></p><p><b>  參考文獻(xiàn)25</b></p><p><b>  概述</b></p><p>  1.1 最小二乘法簡(jiǎn)介</p><p>  最小二乘法是法國(guó)大數(shù)學(xué)家A.M.Legendre 最先于1805年發(fā)表的,其動(dòng)機(jī)是為處理一類從天文

13、學(xué)和測(cè)地學(xué)中提出的數(shù)據(jù)分析問(wèn)題。它通過(guò)最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡(jiǎn)便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小[3]。最小二乘法還可用于曲線擬合,工程施工中,我們會(huì)經(jīng)常取得一些相關(guān)的數(shù)據(jù),這些數(shù)據(jù)往往來(lái)自與施工密切相關(guān)的測(cè)量或?qū)嶒?yàn)中,我們可以通過(guò)作圖或多段插值取得變量之間的聯(lián)系,但作圖和插值查圖往往誤差較大。這時(shí)可采用最小二乘法先擬合出一個(gè)多項(xiàng)式,再根據(jù)此多項(xiàng)式求解任一自變量

14、所對(duì)應(yīng)的因變量較精確的結(jié)果,據(jù)此繪圖可得到較精確、較合理的曲線[4]。</p><p>  1801年,意大利天文學(xué)家朱賽普·皮亞齊發(fā)現(xiàn)了第一顆小行星谷神星[2],經(jīng)過(guò)40天的跟蹤觀測(cè)后,由于谷神星運(yùn)行至太陽(yáng)背后,使得皮亞齊失去了谷神星的位置。隨后全世界的科學(xué)家利用皮亞齊的觀測(cè)數(shù)據(jù)開始尋找谷神星,但是根據(jù)大多數(shù)人計(jì)算的結(jié)果來(lái)尋找谷神星都沒有結(jié)果。時(shí)年24歲的高斯也計(jì)算了谷神星的軌道。奧地利天文學(xué)家海因里

15、希·奧爾伯斯根據(jù)高斯計(jì)算出來(lái)的軌道重新發(fā)現(xiàn)了谷神星。高斯使用的最小二乘法的方法發(fā)表于1809年他的著作《天體運(yùn)動(dòng)論》中。 法國(guó)科學(xué)家勒讓德于1806年獨(dú)立發(fā)現(xiàn)“最小二乘法”,但因不為世人所知而默默無(wú)聞。 勒讓德曾與高斯為誰(shuí)最早創(chuàng)立最小二乘法原理發(fā)生爭(zhēng)執(zhí)[5]。 1829年,高斯提供了最小二乘法的優(yōu)化效果強(qiáng)于其他方法的證明,因此被稱為高斯-莫卡夫定理。最小二乘法(又稱最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù)。它通過(guò)最小化誤差的平方和尋找數(shù)

16、據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡(jiǎn)便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小。最小二乘法還可用于曲線擬合。其他一些優(yōu)化問(wèn)題也可通過(guò)最小化能量或最大化熵用最小二乘法來(lái)表達(dá)[6]。</p><p>  最小二乘法作為函數(shù)逼近的一種重要方法,廣泛的應(yīng)用于物理學(xué)、測(cè)繪學(xué)、數(shù)值計(jì)算、大地測(cè)量學(xué)等。最小二乘法在19世紀(jì)初發(fā)明后,很快得到歐洲一些國(guó)家的天文和測(cè)地學(xué)工作者的廣泛使用[7]。據(jù)不完

17、全統(tǒng)計(jì),自1805年至1864年的60年期間,有關(guān)這一方法的研究論文約250篇,一些百科全書,包括1837年出版的不列顛百科全書第7版,都收進(jìn)了有關(guān)這個(gè)方法的介紹。在研究論文中,有一些是關(guān)于最小二乘估計(jì)的計(jì)算,這涉及解線性方程組。高斯也注意了這個(gè)問(wèn)題,給出了正則方程的命名并發(fā)展了解方程的消去法。但是,在電子計(jì)算機(jī)出現(xiàn)以前,當(dāng)參數(shù)個(gè)數(shù)較大時(shí),計(jì)算任務(wù)很繁重[8]。1858年,英國(guó)為繪制本國(guó)地圖作了一次大型的測(cè)繪,其數(shù)據(jù)處理用最小二乘法涉及

18、模型中,用兩組人員獨(dú)立計(jì)算,花了兩年半的時(shí)間才完成。1958年我國(guó)某研究所計(jì)算一個(gè)煉鋼方面的課題,涉及用最小二乘法解13個(gè)自變量的線性回歸,30余人用電動(dòng)計(jì)算機(jī)算,夜以繼日花了一個(gè)多月的時(shí)間[9]。勒讓德的工作沒有涉及最小二乘法的誤差分析問(wèn)題。這一點(diǎn)由高斯在1809年發(fā)表的正態(tài)誤差理論加以補(bǔ)足。高斯的這個(gè)理論對(duì)于最小二乘法之用于數(shù)理統(tǒng)計(jì)有極重要意義[10]。</p><p>  本文介紹了最小二乘法在實(shí)際測(cè)量學(xué)中

19、的應(yīng)用,以純堿中鐵含量的測(cè)定為例,碳酸鈉是鉆井液中常用的添加劑之一,主要用來(lái)調(diào)節(jié)PH值和對(duì)膨潤(rùn)土進(jìn)行增效。鐵含量是評(píng)價(jià)碳酸鈉質(zhì)量的一項(xiàng)重要指標(biāo),其含量大小直接影響碳酸鈉的使用效果。測(cè)試碳酸鈉鐵含量的主要方法是鄰菲羅啉分光光度法,樣品溶液的吸光度隨鐵含量的不同呈線性變化。在曲線繪制的過(guò)程中,人為因素對(duì)實(shí)驗(yàn)數(shù)據(jù)的影響較大。運(yùn)用最小二乘法,對(duì)所測(cè)得的數(shù)據(jù)統(tǒng)計(jì)分析、處理后進(jìn)行線性加歸,可以較好地提高測(cè)試結(jié)果的準(zhǔn)確性與可靠性[11]。</p

20、><p>  1.2 VC++的介紹及其應(yīng)用</p><p>  Microsoft Visual C++(簡(jiǎn)稱Visual C++、MSVC、VC++或VC)微軟公司的C++開發(fā)工具,具有集成開發(fā)環(huán)境,可提供編輯C語(yǔ)言,C++及C++/CLI等編程語(yǔ)言。VC++整合了便利的出錯(cuò)工具,特別是整合了微軟視窗式設(shè)計(jì)(Windows API)、三維動(dòng)畫DirectX API,Microsoft .N

21、ET框架 。目前最新的版本是Microsoft Visual C++ 2010。Microsoft Visual C++以擁有“語(yǔ)法高亮”,InteriSense(自動(dòng)編譯功能)以及高級(jí)出錯(cuò)功能而著稱。比如,它允許用戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動(dòng)正在調(diào)試的程序。其編譯及建置系統(tǒng)以預(yù)編譯頭文件、最小重建功能及累加連結(jié)著稱。這些特征明顯縮短程式編輯、編譯及連結(jié)的時(shí)間花費(fèi),在大型軟件計(jì)劃

22、上尤其顯著。Visual Studio 是微軟公司推出的開發(fā)環(huán)境,Visual Studio 可以用來(lái)創(chuàng)建 Windows 平臺(tái)下的 Windows 應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來(lái)創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和Office插</p><p>  VC++包括了各種增強(qiáng)功能,例如可視化設(shè)計(jì)器(使用NET Framework 3.5加速開發(fā))、對(duì)Web開發(fā)工具的大量改進(jìn),以及能夠加速開發(fā)和處理所有類型數(shù)據(jù)的語(yǔ)言

23、增強(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)行并完全訪問(wèn)ASP NET應(yīng)用程序服務(wù)和Microsoft平臺(tái)。</p><p>  圖1 VC++6.0啟動(dòng)界面&l

24、t;/p><p>  MFC是對(duì)WindowsAPI的封裝,大大簡(jiǎn)化了我們的工作;學(xué)VC++主要就是要學(xué)MFC,大約有100多個(gè)類,但常用的也就二三十個(gè)。應(yīng)該像背4級(jí)單詞一樣將這些常用類搞懂;當(dāng)然不要死記,要通過(guò)看幫助、看例子、動(dòng)手練習(xí)來(lái)學(xué)會(huì)它們;而且,并非每個(gè)類的內(nèi)部的所有函數(shù)都要學(xué)會(huì),要日積月累。如果真的想成為高手,做個(gè)筆記本把自己認(rèn)為重要的類、函數(shù)記下來(lái),隨時(shí)學(xué)習(xí),也是很好的突擊方法。 </p>

25、<p>  1.3 論文的主要結(jié)構(gòu)安排</p><p>  論文的第二章詳細(xì)介紹最小二乘法的一些算法以及它們的推導(dǎo)過(guò)程;第三章利用VC++實(shí)現(xiàn)線性和二次曲線擬合算法;第四章利用設(shè)計(jì)的程序解決了一些實(shí)際應(yīng)用問(wèn)題;最后為結(jié)束語(yǔ)。</p><p><b>  第二章 基本理論</b></p><p>  本章將主要介紹最小二乘法曲線擬合,

26、包括其公式的推導(dǎo)。對(duì)于最小二乘算法,本論文只進(jìn)行一些簡(jiǎn)要的概述,簡(jiǎn)單介紹三種:線性擬合、二次擬合函數(shù)、多元線性擬合。最小二乘法(又稱最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù),主要的思想是通過(guò)最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡(jiǎn)便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小[13]。</p><p>  2.1 線性擬合曲線</p><p>  線性

27、擬合在統(tǒng)計(jì)學(xué)上稱為線性回歸。設(shè),為一組已知觀測(cè)數(shù)據(jù),擬合函數(shù)為一直線,即</p><p><b> ?。?)</b></p><p>  其中為待定參數(shù),為誤差。</p><p>  式(1)表示隨著的增加而線性增加或減少。按最小二乘法計(jì)算步驟,得各數(shù)據(jù)點(diǎn)的誤差平方和為</p><p><b> ?。?)<

28、;/b></p><p>  對(duì)式(2)求的偏導(dǎo)數(shù),并使其等于0</p><p><b> ?。?)</b></p><p><b>  或</b></p><p><b> ?。?)</b></p><p>  這個(gè)方程組稱為正規(guī)方程組,用消元或

29、克萊姆法則,可求得方程組的解</p><p><b>  (5) </b></p><p>  其中,,,分別稱為數(shù)據(jù)的平均值。</p><p>  令 </p><p><b>  則式(5)可寫成</b></p><p>  (6)

30、 稱為數(shù)據(jù)的方差,開平方后的稱為標(biāo)準(zhǔn)差:為間的協(xié)方差,當(dāng)其為0時(shí)線性擬合函數(shù)不存在。求得后就可寫出具體的擬合函數(shù)表達(dá)式[5]。</p><p>  2.2 二次擬合函數(shù)</p><p>  已知數(shù)據(jù),,用的二次多項(xiàng)式擬合變量,即</p><p><b> ?。?)</b></p><p&g

31、t;  其中為待定參數(shù),為誤差。為了計(jì)算方便,在解方程組時(shí)減少一個(gè)未知數(shù),由式(7)得到</p><p><b>  (8)</b></p><p><b>  代入式(7)</b></p><p><b>  因此,有誤差平方和</b></p><p>  對(duì)求偏導(dǎo)數(shù),并使其

32、等于0</p><p><b> ?。?)</b></p><p><b>  整理得到正規(guī)方程組</b></p><p><b>  (10)</b></p><p><b>  或</b></p><p><b>  

33、(11)</b></p><p>  解此方程組,得到,再代入式(8)得,因而求得在最小二乘意義下的二次擬合函數(shù)[5]。</p><p>  2.3 多元線性擬合</p><p>  多元線性擬合在統(tǒng)計(jì)學(xué)上稱為多元線性回歸,它表示一個(gè)變量受多個(gè)因素的影響。設(shè)變量和有組觀測(cè)數(shù)據(jù)</p><p>  關(guān)于的擬合函數(shù)為線性,即</

34、p><p>  其中參數(shù)也是由最小二乘法確定,即要求</p><p><b>  因此應(yīng)該滿足</b></p><p><b> ?。?2)</b></p><p>  由式(12)中的第一式可得</p><p><b>  (13)</b></p&g

35、t;<p>  將式(13)代入(12)中的第二偏導(dǎo)數(shù),可得</p><p><b> ?。?4)</b></p><p><b> ?。?5)</b></p><p>  稱之為與,與之間的協(xié)方差,它們表示彼此間現(xiàn)行相關(guān)的大小。若,,表示與,與為線性正相關(guān);否則為線性負(fù)相關(guān),表示增加而(或)減少。當(dāng)時(shí)的方差

36、,因此式(14)可寫成</p><p><b> ?。?6)</b></p><p>  這是由個(gè)方程求解的個(gè)未知數(shù)的方程組可用高斯-約當(dāng)消去法求解方程組(16)可以寫成矩陣形式</p><p><b> ?。?7)</b></p><p>  其中矩陣稱為協(xié)方差矩陣。由于,因此協(xié)方差矩陣是對(duì)稱的。

37、</p><p>  令 ,其中為的方差, 則式(16)和(17)可以分別寫成</p><p><b> ?。?8)</b></p><p><b>  和</b></p><p><b>  (19)</b></p><p><b>  其

38、中 </b></p><p>  , (20)</p><p>  分別稱為與,與的相關(guān)系數(shù),表現(xiàn)相互間線性相關(guān)的程度。,。當(dāng)為正相關(guān);當(dāng)為負(fù)相關(guān),越接近1,則線性相關(guān)越好;越接近于0,則線性關(guān)系越弱。</p><p>  由方程(16)和(17)求解比較直觀,計(jì)算較為簡(jiǎn)單。由方程(18)和(19)求

39、解較為復(fù)雜,但計(jì)算誤差較小,計(jì)算后由</p><p><b>  (21)</b></p><p>  求得,再由式(13)計(jì)算,得到線性擬合函數(shù)的具體表達(dá)式</p><p><b>  (22)</b></p><p>  如果試驗(yàn)是要通過(guò)的測(cè)量來(lái)尋找經(jīng)驗(yàn)公式,則還應(yīng)判別由上述擬合所得的方程是否恰

40、當(dāng)。這可由的相關(guān)系數(shù)來(lái)判別[6]:</p><p>  第三章 最小二乘法曲線擬合的VC++實(shí)現(xiàn)</p><p>  在這一章,我們將把最小二乘法曲線擬合在VC++的平臺(tái)上實(shí)現(xiàn)出來(lái),利用其可視化界面,給曲線擬合帶來(lái)便利。</p><p>  3.1 程序?qū)崿F(xiàn)最小二乘算法及流程圖</p><p>  根據(jù)上一章2.1節(jié)總結(jié)出最小二乘線性擬合算法

41、的具體步驟為:</p><p>  步1. 由方差公式求偏導(dǎo)獲得方程組 </p><p>  步2.輸入數(shù)據(jù)獲得矩陣</p><p>  步3.計(jì)算A的轉(zhuǎn)置矩陣</p><p><b>  步4. ,</b></p><p><b>  解方程組獲得系數(shù)</b></p

42、><p><b>  步5. 計(jì)算</b></p><p>  步6. 輸出運(yùn)算結(jié)果</p><p>  根據(jù)以上步驟總結(jié)出算法流程圖如下:</p><p><b>  圖2 系統(tǒng)流程圖</b></p><p><b>  3.2 界面設(shè)計(jì)</b><

43、/p><p>  所有的算法是在VC++6.0下設(shè)計(jì)的,我們只需運(yùn)行程序,在視圖中將顯示結(jié)果.所有的操作請(qǐng)參看下圖:</p><p><b>  圖3 程序界面</b></p><p><b>  查看版本信息</b></p><p><b>  圖4 幫助信息</b></p

44、><p>  選擇菜單[曲線擬合]下的[輸入?yún)?shù)],將彈出[輸入?yún)?shù)]對(duì)話框,如圖: </p><p><b>  圖5 選擇功能</b></p><p>  運(yùn)行程序,點(diǎn)擊“曲線擬合”,選擇“輸入?yún)?shù)”(必輸項(xiàng))。</p><p><b>  圖6 參數(shù)窗口</b></p><p&

45、gt;  參數(shù)窗口中,“輸入值”,為擬合次數(shù),必錄項(xiàng)(整型),即:時(shí),擬合曲線為線性一次函數(shù)。時(shí),擬合曲線為二次函數(shù)形式。</p><p>  “輸入值”,為將要進(jìn)行擬合的離散點(diǎn)數(shù)量,必錄項(xiàng)(整型),離散點(diǎn)數(shù)量越多,擬合出的曲線更加精確。</p><p>  “輸入坐標(biāo)”,每個(gè)數(shù)據(jù)點(diǎn)的坐標(biāo)值(浮點(diǎn)型),空格隔開。數(shù)量根據(jù)值確定。</p><p>  “輸入坐標(biāo)”,每

46、個(gè)數(shù)據(jù)點(diǎn)的坐標(biāo)值(浮點(diǎn)型),空格隔開。數(shù)量根據(jù)值確定。</p><p>  在輸入完參數(shù)值后,點(diǎn)擊“確定”按鈕,得到返回值窗口。</p><p><b>  圖7  運(yùn)算結(jié)果</b></p><p>  實(shí)際使用中,可能出現(xiàn)對(duì)第一次擬合結(jié)果不滿意,因此添加修改值欄:</p><p><b>  圖8 修改T值&

47、lt;/b></p><p>  點(diǎn)擊修改值,出現(xiàn)如下窗口:</p><p><b>  圖9 輸入數(shù)值</b></p><p>  此時(shí)只需輸入要擬合的次數(shù),不需要再次輸入其他參數(shù)值。</p><p><b>  圖10 運(yùn)算結(jié)果</b></p><p><b&

48、gt;  3.3 主要函數(shù)類</b></p><p>  在VC++程序設(shè)計(jì)語(yǔ)言中所有程序均由函數(shù)組成,函數(shù)是VC++程序編譯的基本單位。VC++函數(shù)通常分為自定義函數(shù)與庫(kù)函數(shù)。主函數(shù)是用戶自定義的函數(shù),所有函數(shù)都由函數(shù)類型、名稱、參數(shù)和函數(shù)體四個(gè)部分組成。</p><p>  class LeastSquare </p><p><b> 

49、 {</b></p><p><b>  public:</b></p><p><b>  int N;</b></p><p><b>  int T;</b></p><p>  float xishu;</p><p><b&g

50、t;  public:</b></p><p>  LeastSquare();</p><p>  virtual ~LeastSquare();</p><p>  float pow_n(float a,int n);//a的n次方</p><p>  void mutiple(float **a,float **b,f

51、loat **c); //矩陣A×矩陣B=矩陣C</p><p>  void matrix_trans(float **a,float **b);//矩陣B=矩陣A的轉(zhuǎn)置</p><p>  void init(float **x_y,float x[],float y[],int n);//n組坐標(biāo)點(diǎn)的數(shù)組</p><p>  void ge

52、t_A(float **matrix_A,float **x_y,int n);//得到矩陣A</p><p>  void print_array(float **arr,int n);//輸出矩陣</p><p>  void convert(float **argu,int n);//將方程組轉(zhuǎn)化為上三角方程組</p><p>  void co

53、mpute(float **argu,int n,float root[]);//解方程組</p><p>  void get_y(float **trans_A,float **x_y,float y[],int n); </p><p>  void cons_formula(float **coef_A,float y[],float **coef_form);</p&g

54、t;<p>  void print_root(float a[],int n);</p><p>  void process(float x_point[],float y_point[],float result[]);</p><p>  void setN(int n);</p><p>  void setT(int t);</p&g

55、t;<p>  float getXiShu(float x_point[],float y_point[]);//獲得相關(guān)系數(shù)</p><p><b>  };</b></p><p><b>  表1 函數(shù)變量聲明</b></p><p>  3.4 程序設(shè)計(jì)中的問(wèn)題</p><p&

56、gt;  下面我們來(lái)總結(jié)一下程序設(shè)計(jì)中的一些問(wèn)題,以及未實(shí)現(xiàn)的算法:</p><p>  修改T值之后,重復(fù)調(diào)用算法。</p><p>  輸入坐標(biāo)點(diǎn)時(shí),若輸入為字母,應(yīng)提示錯(cuò)誤,功能未實(shí)現(xiàn)。</p><p>  坐標(biāo)點(diǎn)輸入過(guò)程中,輸入坐標(biāo)點(diǎn)個(gè)數(shù)不足時(shí),未能提示信息。</p><p>  特殊形式的函數(shù)如指數(shù)函數(shù),對(duì)數(shù)函數(shù)的擬合未實(shí)現(xiàn)。<

57、;/p><p>  程序只能完成一次、二次函數(shù)擬合可繼續(xù)修改完善程序方便使用。</p><p><b>  最小二乘法的應(yīng)用</b></p><p>  上一章我們介紹了最小二乘法的VC++編程實(shí)現(xiàn),在這章,我們利用最小二乘法和編制的程序來(lái)處理幾個(gè)實(shí)際的問(wèn)題,簡(jiǎn)要展示一下程序功能。</p><p>  4.1 測(cè)定銅絲的電阻

58、溫度系數(shù)</p><p>  以惠斯通電橋測(cè)定銅絲在不同溫度下的電阻值試驗(yàn)為例,簡(jiǎn)要說(shuō)明程序的實(shí)用性。</p><p>  任何物質(zhì)的電阻都與溫度有關(guān),多數(shù)金屬的電阻隨溫度升高而增大,有如下關(guān)系:,式中、分別是t℃、O℃時(shí)金屬的電阻值,是電阻溫度系數(shù),其單位是℃-1。一般與溫度有關(guān),但對(duì)于實(shí)驗(yàn)用的純銅材料來(lái)說(shuō),在-50℃~100℃的范圍內(nèi),的變化非常小,可當(dāng)作常數(shù),即與呈線性關(guān)系[14],

59、下表為實(shí)驗(yàn)采集數(shù)據(jù):</p><p>  表2 銅絲電阻實(shí)驗(yàn)采集數(shù)據(jù)</p><p><b>  圖11 數(shù)據(jù)點(diǎn)示意</b></p><p>  根據(jù)離散點(diǎn)分布情況判斷出,曲線大致走向類似于直線,則采用直線擬合:</p><p><b>  表3  運(yùn)算數(shù)據(jù)</b></p><p

60、><b>  計(jì)算過(guò)程:</b></p><p><b>  記 </b></p><p><b>  平均值記:</b></p><p><b>  則正規(guī)方程組為:</b></p><p>  其中 </p>&

61、lt;p>  將上式數(shù)據(jù)代入方程組得:</p><p><b>  解得:</b></p><p>  下面我們利用程序解決計(jì)算問(wèn)題,將參數(shù)輸入到程序中運(yùn)算:</p><p><b>  圖12 參數(shù)值輸入</b></p><p>  圖13  銅絲電阻實(shí)驗(yàn)擬合結(jié)果</p>&l

62、t;p>  根據(jù)程序運(yùn)算結(jié)果輸入的曲線,利用Maple繪圖軟件畫出相應(yīng)的曲線走向:</p><p>  圖14  擬合曲線和離散點(diǎn)繪圖</p><p>  表示試驗(yàn)數(shù)據(jù)線性良好。根據(jù)比較可直觀的看出銅絲電阻值隨溫度增加的變化,程序計(jì)算出的曲線方程很好的展示出了電阻值的變化規(guī)律。</p><p>  4.2 最小二乘法在道路中心線測(cè)量中應(yīng)用</p>

63、<p>  道路中心線是由一系列線路轉(zhuǎn)折點(diǎn)組成的,路線中線的平面集合線形由直線和曲線組成, 由于測(cè)量往往存在誤差, 所以需要對(duì)測(cè)得的數(shù)據(jù)進(jìn)行處理, 使所測(cè)設(shè)的曲線是一條光滑連續(xù)的曲線。一般對(duì)曲線的處理方法有插值和擬合兩種[11]。插值是目前常用的一種方法, 利用三次樣條插值法、拋物線加權(quán)平均法和張力樣條函數(shù)插值法都可以很好地解決這一問(wèn)題, 但計(jì)算量非常大。利用基于最小二乘法原理的曲線擬合對(duì)線性進(jìn)行設(shè)計(jì), 可達(dá)到同樣的目的,

64、且計(jì)算結(jié)果更為簡(jiǎn)便。測(cè)量得到實(shí)際數(shù)據(jù)【16】:</p><p><b>  表4 實(shí)際測(cè)量數(shù)據(jù)</b></p><p>  將數(shù)據(jù)輸入到程序中:</p><p><b>  圖15 輸入?yún)?shù)</b></p><p>  圖16 曲線擬合結(jié)果</p><p>  圖17  函數(shù)

65、曲線示意</p><p>  道路中心勘測(cè)通過(guò)計(jì)算道路中心線各點(diǎn)樁號(hào)坐標(biāo),用這些離散點(diǎn)進(jìn)行擬合大致走向,為施工帶來(lái)一定的參考價(jià)值。</p><p>  4.3 最小二乘法在工業(yè)純堿中鐵含量測(cè)定中的應(yīng)用</p><p>  鐵含量是工業(yè)碳酸鈉的一個(gè)重要質(zhì)量指標(biāo), 其含量高低直接決定著純堿質(zhì)量及其使用性能。鄰菲羅啉分光光度法是測(cè)定碳酸鈉中微量鐵含量的經(jīng)典方法, 樣品溶液

66、的吸光度隨鐵離子濃度的增大而呈上升趨勢(shì)[18]。平時(shí)我們?cè)趯?shí)驗(yàn)過(guò)程中會(huì)遇到兩量如果存在的線性關(guān)系時(shí),其中為線性函數(shù)的參數(shù)。當(dāng)實(shí)驗(yàn)數(shù)據(jù)存在這種線性關(guān)系時(shí),通常我們運(yùn)用作圖法對(duì)其參數(shù)進(jìn)行處理運(yùn)算、進(jìn)而求出實(shí)驗(yàn)結(jié)果。但是作圖法很難得到好的結(jié)果,而運(yùn)用最小二乘法可以得到比較好的線性擬合[19]。對(duì)其兩種方法比較可以最小二乘法的數(shù)據(jù)處理方法是比較理想的辦法。本文運(yùn)用作圖法和最小二乘法對(duì)工業(yè)純堿中鐵含量的測(cè)定的數(shù)據(jù)進(jìn)行處理,得出運(yùn)用最小二乘法可以得

67、到誤差比較小的鐵含量。在曲線繪制的過(guò)程中,人為因素對(duì)實(shí)驗(yàn)數(shù)據(jù)的影響較大。運(yùn)用最小二乘法,對(duì)所測(cè)得的數(shù)據(jù)統(tǒng)計(jì)分析、處理后進(jìn)行線性加歸,可以較好地提高測(cè)試結(jié)果的準(zhǔn)確性與可靠性【20】。</p><p>  根據(jù)實(shí)驗(yàn)數(shù)據(jù)列以下表格:</p><p>  表5  實(shí)驗(yàn)數(shù)據(jù)收集</p><p>  要使繪制的曲線盡可能圓滑并且盡可能經(jīng)過(guò)所有的點(diǎn),但是根據(jù)所測(cè)數(shù)據(jù)據(jù)繪出的曲線并

68、不呈線性回歸,所以只能主觀的繪制一條平滑的曲線,根據(jù)直線經(jīng)過(guò)的點(diǎn),代入公式中求得和。</p><p>  圖18 離散點(diǎn)示意圖</p><p>  根據(jù)剛剛繪制的離散點(diǎn)圖,這些點(diǎn)大致在一條直線上,我們可以認(rèn)為變量和變量的關(guān)系是線性的,由此可以設(shè)其中和 是待定系數(shù),根據(jù)最小二乘法提供的公式我們可以將已知數(shù)據(jù)輸入程序計(jì)算:</p><p><b>  圖19參

69、數(shù)輸入</b></p><p>  圖20  曲線擬合結(jié)果</p><p>  根據(jù)程序運(yùn)算結(jié)果,在Maple繪圖軟件中畫出圖像:</p><p>  圖21 實(shí)驗(yàn)數(shù)據(jù)擬合效果圖</p><p>  將所求得數(shù)據(jù)代入公式可以求出 和,得到這樣給出為鐵的含量,代表吸光度,由(吸光度)進(jìn)而求解為0.013、0.014(鐵的含量)。&l

70、t;/p><p>  4.4 應(yīng)用效果分析</p><p>  我們選取了代表數(shù)據(jù),初步分析 、處理代入最小二乘法的計(jì)算公式中,求得經(jīng)驗(yàn)公式。進(jìn)而求得回歸方程,減小了誤差,使我們的測(cè)試數(shù)據(jù)更加科學(xué)合理化。</p><p>  在這里我們利用最小二乘法只是解決了幾個(gè)應(yīng)用實(shí)例,對(duì)于在以后的監(jiān)測(cè)數(shù)據(jù)中只要兩個(gè)變量成線性相關(guān)我們都可以用最小二乘法,利用最小二乘法可以把實(shí)驗(yàn)誤差減

71、小到最小,提高實(shí)驗(yàn)數(shù)據(jù)的準(zhǔn)確度與可靠性。以此我們可以利用最小二乘法編程,設(shè)計(jì)成計(jì)算機(jī)軟件,這樣只需將我們測(cè)得的數(shù)據(jù)輸入計(jì)算機(jī)中就可以得出經(jīng)驗(yàn)公式,進(jìn)而求得未知量。</p><p><b>  結(jié)束語(yǔ)</b></p><p>  當(dāng)今最小二乘法已經(jīng)廣泛的應(yīng)用于各類學(xué)科,成為了不可缺少的重要工具。目前在物理學(xué)、地質(zhì)勘探學(xué)、概率論、統(tǒng)計(jì)學(xué)等領(lǐng)域有著重要的應(yīng)用。而最小二乘法曲

72、線擬合的出現(xiàn),又使得圖像呈現(xiàn)更加直觀,程序代碼簡(jiǎn)單,使用方便,已經(jīng)成為研究人員開展科研工作的有效工具之一。在做完了這篇論文后,學(xué)習(xí)到了許多新的知識(shí)。對(duì)于最小二乘法有了深一步的認(rèn)識(shí),了解了它的計(jì)算原理以及對(duì)于現(xiàn)在的測(cè)量估算上的意義,并對(duì)VC++也有了重新的認(rèn)識(shí),感受到了VC++在現(xiàn)代科技中的重要地位。</p><p>  在完成論文的過(guò)程中遇到了許許多多的困難,比如程序上的不完善,算法中的疑惑。經(jīng)過(guò)了一次次的更改,

73、才逐漸的完成了這篇論文。在畢業(yè)設(shè)計(jì)的過(guò)程中,學(xué)到了許多新的知識(shí),在查閱資料的過(guò)程中獲得了不少的收獲:</p><p>  1.對(duì)于最小二乘法了解,嘗試著用最小二乘法手工計(jì)算數(shù)據(jù)的時(shí)候,明顯的感覺到其中的繁瑣及復(fù)雜。但是通過(guò)計(jì)算機(jī)編程實(shí)現(xiàn)算法的時(shí)候,不管是從計(jì)算量上還是時(shí)間上,都深切的體會(huì)到了編程實(shí)現(xiàn)算法的效率性和實(shí)用性。</p><p>  2.在使用Visual C++的時(shí)候,開始對(duì)其一

74、無(wú)所知。在設(shè)計(jì)程序的過(guò)程中,許多操作無(wú) 法實(shí)現(xiàn)。于是開始查閱資料,從圖書館借書或者詢問(wèn)同學(xué)。在此過(guò)程中,提高了自己對(duì)VC++編程的理解。</p><p>  3.對(duì)Word及Excel的使用變得更加的熟練,在設(shè)計(jì)文體結(jié)構(gòu)以及布局方面上有了新的認(rèn)識(shí)。</p><p>  之后的論文在*老師的逐步建議以及要求下進(jìn)行修改,直到論文邏輯的嚴(yán)謹(jǐn)性漸漸地完善,經(jīng)過(guò)老師指導(dǎo)

75、,對(duì)論文格式的重要性有了更深刻認(rèn)識(shí)。在此也要感謝我的導(dǎo)師聞小永老師在這幾個(gè)月間對(duì)我的幫助與耐心的指導(dǎo)。感謝**同學(xué)在Maple軟件圖形繪制過(guò)程中給予的幫助。</p><p>  但是其中還是有許多的不足之處,由于對(duì)于VC++編程的不熟練使用,在對(duì)某些特定形式的函數(shù)曲線進(jìn)行擬合這一過(guò)程中無(wú)法實(shí)現(xiàn),導(dǎo)致程序不是很完善。在今后,還是要更加的努力,爭(zhēng)取將此部分在不久之后實(shí)現(xiàn)出來(lái)。</p><p>

76、<b>  參考文獻(xiàn)</b></p><p>  [1] 余介石.高等數(shù)學(xué).高教出版社[D],1959.</p><p>  [2] 任雪娟.計(jì)算方法.氣象出版社[M],2009.3.</p><p>  [3] 蘭燕娜.基于VB語(yǔ)言實(shí)現(xiàn)最小二乘法直線擬合[J].南通大學(xué)理學(xué)院.長(zhǎng)江大學(xué)學(xué)報(bào)(自然科學(xué)版).2011,(06):09-03<

77、/p><p>  [4] 陳良澤.用矩陣實(shí)現(xiàn)曲線擬合中的最小二乘法[J].傳感器技術(shù).2001.(02):030-02</p><p>  [5] 鄒樂(lè)強(qiáng).最小二乘法原理及其簡(jiǎn)單應(yīng)用[J].河南工程技術(shù)學(xué)校.科技信息2010.(03):045-04</p><p>  [6] 高盼.基于最小二乘法的道路平面曲線擬合[J].測(cè)繪信息與工程 2011.(02):019-03

78、</p><p>  [7] 鄒占勇.基于最小二乘法分析第三產(chǎn)業(yè)對(duì)國(guó)民總收入影響[J].經(jīng)濟(jì)研究導(dǎo)刊 2011.(28):0007-02</p><p>  [8] 張亞軍,陳立新.最小二乘法和熔絲編程[J].測(cè)繪信息與工程 2012.(02):015-04</p><p>  [9] 唐妍霞.用最小二乘法解決的一個(gè)物理問(wèn)題[J].河北北方學(xué)院學(xué)報(bào) 2012.(01

79、):008-04</p><p>  [10]吳建民,陶菊春.一元線性回歸問(wèn)題的改進(jìn)方法[J].甘肅農(nóng)業(yè)大學(xué)學(xué)報(bào) 1992.(03):232-236</p><p>  [11]鄭健,楊洪國(guó),馬婷婷.測(cè)量平差與最小二乘法在工程測(cè)量中的應(yīng)用[J].四川建筑,2010,30(1):177-178</p><p>  [12]賈小勇,徐傳勝,白欣.最小二乘法創(chuàng)立及其思想方

80、法[J].西北大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,36(3):507-511</p><p>  [13]米海珍,周鳳璽,楊文俠.黃土濕陷系數(shù)的偏最小二乘回歸分析與模型[J].蘭州理工大學(xué)學(xué)報(bào),2004,30(2):110-112</p><p>  [14]羅海明.最小二乘法在伏安法測(cè)電阻實(shí)驗(yàn)中的應(yīng)用[J]. 東北林業(yè)大學(xué),2012,25(2):088-03</p><

81、p>  [15]徐傳勝,白欣.切比雪夫的最小二乘法插值理論研究[J]. 首都師范大學(xué)學(xué)報(bào)(自然科學(xué)版),201,32(5):7-10</p><p>  [16]任紅萍,程玉民,張武.改進(jìn)的移動(dòng)最小二乘插值法研究[J]. 工程數(shù)學(xué)學(xué)報(bào),2010,27(06):1021-1028</p><p>  [19]Jinsiang Shaw,Noniterative solution of

82、inverse problems by the linear least square method.Applied Mathematical Modelling 25(2001) 683-696</p><p>  [20]Pradova V,Walczak B,Massart DL,et al.A comparison of two algorithms for warping of analytical s

83、ignals[J].Analytical Chimica Acta,2001,450:131-141</p><p><b>  北京信息科技大學(xué)</b></p><p>  畢業(yè)設(shè)計(jì)(論文)附錄</p><p>  題目 </p><p>  學(xué)院

84、 </p><p>  專業(yè) </p><p>  學(xué)生姓名 班級(jí)/學(xué)號(hào) </p><p>  指導(dǎo)老師/督導(dǎo)老師

85、 </p><p>  起止時(shí)間 至 </p><p>  附件A 程序源代碼:</p><p><b>  算法程序:</b></p><p>  #include "stdafx.h&

86、quot;</p><p>  #include "CurveFitting.h"</p><p>  #include "LeastSquare.h"</p><p>  #include "math.h"</p><p>  #define W 1//權(quán)函數(shù)</p>

87、;<p>  #define PRECISION 0.00001//精度</p><p>  #ifdef _DEBUG</p><p>  #undef THIS_FILE</p><p>  static char THIS_FILE[]=__FILE__;</p><p>  #define new DEBUG_NEW&

88、lt;/p><p><b>  #endif</b></p><p>  LeastSquare::LeastSquare()</p><p><b>  {</b></p><p><b>  }</b></p><p>  LeastSquare::~L

89、eastSquare()</p><p><b>  {</b></p><p><b>  }</b></p><p>  float LeastSquare::pow_n(float a,int n) //a的n次方</p><p><b>  { </b></p&g

90、t;<p><b>  int i; </b></p><p><b>  if(n==0) </b></p><p>  return(1); </p><p>  float res=a; </p><p>  for(i=1;i<n;i++) </p><

91、;p><b>  { </b></p><p><b>  res*=a; </b></p><p><b>  } </b></p><p>  return(res); </p><p><b>  } </b></p><p

92、>  void LeastSquare::mutiple(float **a,float **b,float **c) //矩陣A×矩陣B=矩陣C</p><p><b>  { </b></p><p>  float res=0; </p><p>  int i,j,k; </p><p>  fo

93、r(i=0;i<T+1;i++) </p><p>  for(j=0;j<T+1;j++) </p><p><b>  { </b></p><p><b>  res=0; </b></p><p>  for(k=0;k<N;k++) </p><p&g

94、t;<b>  { </b></p><p>  res+=a[i][k]*b[k][j]; </p><p>  c[i][j]=res; </p><p><b>  } </b></p><p><b>  } </b></p><p><b

95、>  } </b></p><p>  void LeastSquare::matrix_trans(float **a,float **b) //矩陣B=矩陣A的轉(zhuǎn)置</p><p><b>  { </b></p><p><b>  int i,j; </b></p><p>

96、;  for(i=0;i<N;i++) </p><p><b>  { </b></p><p>  for(j=0;j <T+1;j++) </p><p><b>  { </b></p><p>  b[j][i]=a[i][j]; </p><p>&l

97、t;b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void LeastSquare::init(float **x_y,float x[],float y[],int n) //n組坐標(biāo)點(diǎn)的數(shù)組</p><

98、p><b>  { </b></p><p><b>  int i;</b></p><p>  for(i=0;i<n;i++){</p><p>  x_y[i][0]=x[i]; </p><p>  x_y[i][1]=y[i];</p><p><

99、;b>  }</b></p><p><b>  }</b></p><p>  void LeastSquare::get_A(float **matrix_A,float **x_y,int n) //得到矩陣A</p><p><b>  { </b></p><p><

100、;b>  int i,j; </b></p><p>  for(i=0;i<N;i++) </p><p><b>  { </b></p><p>  for(j=0;j<T+1;j++) </p><p><b>  { </b></p><p

101、>  matrix_A[i][j]=W*pow_n(x_y[i][0],j); </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void LeastSquare::prin

102、t_array(float **arr,int n)//輸出矩陣</p><p><b>  { </b></p><p><b>  int i,j; </b></p><p>  for(i=0;i<n;i++) </p><p><b>  { </b></p

103、><p>  for(j=0;j<T+1;j++) </p><p><b>  { </b></p><p>  printf("%g ",arr[i][j]); </p><p><b>  } </b></p><p>  printf( &qu

104、ot;\n"); </p><p><b>  } </b></p><p><b>  } </b></p><p>  void LeastSquare::compute(float **argu,int n,float root[]) //解方程組</p><p><b>

105、  { </b></p><p><b>  int i,j; </b></p><p>  float temp; </p><p>  for(i=n-1;i>=0;i--) </p><p><b>  { </b></p><p>  temp=ar

106、gu[i][n]; </p><p>  for(j=n-1;j> i;j--) </p><p><b>  { </b></p><p>  temp-=argu[i][j]*root[j]; </p><p><b>  } </b></p><p>  root

107、[i]=temp/argu[i][i]; </p><p><b>  } </b></p><p><b>  } </b></p><p>  void LeastSquare::get_y(float **trans_A,float **x_y,float y[],int n)</p><p>

108、;<b>  { </b></p><p><b>  int i,j; </b></p><p>  float temp; </p><p>  for(i=0;i<n;i++) </p><p><b>  { </b></p><p>&l

109、t;b>  temp=0; </b></p><p>  for(j=0;j<N;j++) </p><p><b>  { </b></p><p>  temp+=trans_A[i][j]*x_y[j][1]; </p><p><b>  } </b></p&g

110、t;<p>  y[i]=temp; </p><p><b>  } </b></p><p><b>  } </b></p><p>  void LeastSquare::cons_formula(float **coef_A,float y[],float **coef_form) </p&g

111、t;<p><b>  { </b></p><p><b>  int i,j; </b></p><p>  for(i=0;i<T+1;i++) </p><p><b>  { </b></p><p>  for(j=0;j<T+2;j++)

112、 </p><p><b>  { </b></p><p>  if(j==T+1) </p><p>  coef_form[i][j]=y[i]; </p><p><b>  else </b></p><p>  coef_form[i][j]=coef_A[i][

113、j]; </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void LeastSquare::print_root(float a[],int n) </p><

114、;p><b>  { </b></p><p><b>  int i,j; </b></p><p>  printf("擬合曲線方程為:\ny(x)=%g",a[0]); </p><p>  for(i=1;i<n;i++) </p><p><b>

115、  { </b></p><p>  printf( "+%g",a[i]); </p><p>  for(j=0;j<i;j++) </p><p><b>  { </b></p><p>  printf("*X"); </p><p&

116、gt;<b>  } </b></p><p><b>  } </b></p><p>  printf("\n"); </p><p><b>  } </b></p><p>  float LeastSquare::getXiShu(float x_

117、point[],float y_point[]){</p><p>  float xx = 0.0;//x坐標(biāo)均值</p><p>  float yy = 0.0;//y坐標(biāo)均值</p><p>  float xx1 = 0.0;</p><p>  float yy1 = 0.0;</p><p>  

118、float xx2 = 0.0;</p><p>  float yy2 = 0.0;</p><p>  float xy1 = 0.0;</p><p>  float xy2 = 0.0;</p><p>  float res = 0.0;</p><p>  for(int i = 0; i < N;

119、i++){</p><p>  xx1 += x_point[i];</p><p>  yy1 += y_point[i];</p><p><b>  }</b></p><p>  xx = xx1/N;//均值</p><p>  yy = yy1/N;</p><

120、p>  xx1= 0.0;</p><p>  yy1 = 0.0;</p><p>  for(i = 0; i < N; i++){</p><p>  xy1 += (x_point[i] - xx)*(y_point[i] - yy);</p><p>  xx2 += (x_point[i] - xx)*(x_poin

121、t[i] - xx);</p><p>  yy2 += (y_point[i] - yy)*(y_point[i] - yy);</p><p><b>  }</b></p><p>  //CString s;</p><p>  //s.Format(_T("%f %f %f %f"), xx

122、1, yy1, xx2, yy2);</p><p>  //AfxMessageBox(s);</p><p>  xy2 = sqrt(xx2)*sqrt(yy2);</p><p>  res = xy1/xy2;</p><p>  return res;</p><p><b>  }</b&

123、gt;</p><p>  void LeastSquare::process(float x_point[],float y_point[],float result[]) </p><p><b>  { </b></p><p>  float **x_y = NULL; //創(chuàng)建指針,賦空值</p><p>

124、  float **matrix_A = NULL;</p><p>  float **trans_A = NULL;</p><p>  float **coef_A = NULL;</p><p>  float **coef_formu = NULL;</p><p>  float *y = NULL;</p><

125、;p>  x_y = new float*[N];</p><p>  for(int i=0; i<N;i++){</p><p>  x_y[i] = new float[2];</p><p><b>  }</b></p><p>  matrix_A = (float**)malloc(sizeof

126、(float*)*N);//行</p><p>  for(i = 0; i < N; i++){</p><p>  matrix_A[i] = (float*)malloc(sizeof(float)*(T+1));//列</p><p><b>  }</b></p><p>  trans_A = (flo

127、at**)malloc(sizeof(float*)*(T + 1));//行</p><p>  for(i = 0; i < T + 1; i++){</p><p>  trans_A[i] = (float*)malloc(sizeof(float)*N);//列</p><p><b>  }</b></p>&l

溫馨提示

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

評(píng)論

0/150

提交評(píng)論