VB計(jì)算程序課程設(shè)計(jì)報(bào)告_第1頁(yè)
VB計(jì)算程序課程設(shè)計(jì)報(bào)告_第2頁(yè)
VB計(jì)算程序課程設(shè)計(jì)報(bào)告_第3頁(yè)
VB計(jì)算程序課程設(shè)計(jì)報(bào)告_第4頁(yè)
VB計(jì)算程序課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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、精選優(yōu)質(zhì)文檔-傾情為你奉上測(cè)試與光電工程學(xué)院課程設(shè)計(jì)任務(wù)書測(cè)控技術(shù)與儀器系班 學(xué)號(hào) 姓名吳輝課程名稱:用最小二乘法求擬合曲線課題要求:利用VB語(yǔ)言編程實(shí)現(xiàn)對(duì)給定離散點(diǎn)的擬合(不小于10個(gè))的擬合用最小二乘法求數(shù)據(jù)的擬合曲線。要求有良好的輸入、輸出界面,輸出應(yīng)包含直線方程并圖形顯示擬合效果。完成軟件的整體設(shè)計(jì)。課題進(jìn)程: 1)熟悉VB編程語(yǔ)言、最小二乘法算法分析 3天 2)編寫程序?qū)崿F(xiàn)以上功能 3天 3)軟件調(diào)試、測(cè)試 2天 4)撰寫課程設(shè)計(jì)報(bào)告 2天指導(dǎo)老師:楊琳瑜目 錄 摘要最小二乘法最早是由高斯提出的,這是數(shù)據(jù)處理的一種很有效的統(tǒng)計(jì)方法。高斯用這種方法解決了天文學(xué)方面的問(wèn)題,特別是確定了某

2、些行星和彗星的天體軌跡。這類天體的橢圓軌跡由5個(gè)參數(shù)確定,原則上,只要對(duì)它的位置做5次測(cè)量就足以確定它的整個(gè)軌跡。但由于存在測(cè)量誤差,由5次測(cè)量所確定的運(yùn)行軌跡極不可靠,相反,要進(jìn)行多次測(cè)量,用最小二乘法消除測(cè)量誤差,得到有關(guān)軌跡參數(shù)的更精確的值。最小二乘法近似將幾十次甚至上百次的觀察所產(chǎn)生的高維空間問(wèn)題降到了橢圓軌跡模型的五維參數(shù)空間。最小二乘法普遍適用于各個(gè)科學(xué)領(lǐng)域,它在解決實(shí)際問(wèn)題中發(fā)揮了重要的作用。它在生產(chǎn)實(shí)踐、科學(xué)實(shí)驗(yàn)及經(jīng)濟(jì)活動(dòng)中均有廣泛應(yīng)用。比如說(shuō),我們引入等效時(shí)間的概念,根據(jù)Arrhenius函數(shù)和指數(shù)函數(shù)研究水化熱化學(xué)反應(yīng)速率隨溫度的變化,最后采用最小二乘法回歸分析試驗(yàn)數(shù)據(jù),確

3、定絕熱溫升和等效時(shí)間的關(guān)系式。第1章 最小二乘法1) 理論依據(jù)最小二乘的思想就是要使得觀測(cè)點(diǎn)和估計(jì)點(diǎn)的距離的平方和達(dá)到最小.這里的“二乘”指的是用平方來(lái)度量觀測(cè)點(diǎn)與估計(jì)點(diǎn)的遠(yuǎn)近(在古漢語(yǔ)中“平方”稱為“二乘”),“最小”指的是參數(shù)的估計(jì)值要保證各個(gè)觀測(cè)點(diǎn)與估計(jì)點(diǎn)的距離的平方和達(dá)到最小.對(duì)于回歸模型y=S(x),若()(i=1,2,3···m)為收集到的觀測(cè)數(shù)據(jù),則應(yīng)該用來(lái)估計(jì),這里是()(i=1,2,3···m)的估計(jì)值。它們之間距離的平方和就是。進(jìn)而最小二乘估計(jì)量就是使= (1)達(dá)到最小值的參數(shù)。2) 線性擬合分析給定一組測(cè)量數(shù)據(jù)(

4、),i=0,1,2,m,基于最小二乘原理,求得變量x和y之間的函數(shù)關(guān)系f(x,A),使它最佳地逼近已知數(shù)據(jù)。其中A=()是一些待定參數(shù)。通常把最小二乘法中的都考慮為加權(quán)平方和,即= 其中,是a,b上的權(quán)函數(shù),它表示反應(yīng)數(shù)據(jù)()在實(shí)驗(yàn)中所占數(shù)據(jù)的比重。選擇參數(shù)A使得加權(quán)平方和最小,即求滿足 (2)的f*(x)。要使(2)最小,它轉(zhuǎn)換為求多元函數(shù)的極小點(diǎn)問(wèn)題。由求多遠(yuǎn)函數(shù)極值的必要條件,有若記,則可改寫為 (3)此方程成為法方程。它也可以寫成矩陣形式由于,線性無(wú)關(guān),故,方程組(3)存在唯一解 (i=1,2,3···n),從而得到函數(shù)f(x)的最小二乘法解為可以證明,這

5、樣得到的對(duì)于任何多項(xiàng)式形式的,都有故確實(shí)所求最小二乘解。摘自數(shù)值分析3) 非線性擬合分析我們可通過(guò)變數(shù)變換將其化為線性模型。利用最小二乘線性擬合確定其系數(shù),再利用逆變換給出原問(wèn)題的曲線擬合函數(shù)。 第2章 系統(tǒng)設(shè)計(jì)1) 采用的軟件及開發(fā)平臺(tái)Microsoft Visual Basic 6.02) 項(xiàng)目的總體方案3) 項(xiàng)目的詳細(xì)設(shè)計(jì)command1(生成點(diǎn)坐標(biāo)):點(diǎn)擊后按要求輸入坐標(biāo)點(diǎn),在text1中輸出command2(生成坐標(biāo)系,繪點(diǎn)):將輸入的點(diǎn)在picture1中繪制出坐標(biāo)軸以及點(diǎn)command3(生成線性方程):計(jì)算輸入坐標(biāo)點(diǎn)的線性回歸方程,在picture1中繪制線性方程,在pictu

6、re2中輸出線性方程command4 (清除):將text1,picture1,picture2中的內(nèi)容清除command5(結(jié)束):結(jié)束程序?qū)ο髮傩悦麑傩灾礔orm1Caption最小二乘法Text1Text MultiLineTrueAlignment2LockedTrueCommand1Caption生成坐標(biāo)點(diǎn)Command2Caption生成坐標(biāo)系,繪點(diǎn)Command3Caption生成線性方程Command4Caption清除Command5Caption退出Picture1Picture2Font四號(hào)Label1Caption 線性方程為:調(diào)試運(yùn)行截圖:第3章 設(shè)計(jì)實(shí)現(xiàn)1) 主要功

7、能模塊的具體實(shí)現(xiàn)這個(gè)VB程序設(shè)計(jì)的主要功能模塊在于怎樣在圖片框中畫出線性圖,然而,我們?cè)谶@一模塊采用了分步考慮,首先考慮的是:假如使用者只輸入一個(gè)點(diǎn),那么在圖片框中無(wú)法生成線性圖,顧我們把它設(shè)成“單點(diǎn)無(wú)法擬合,請(qǐng)重新輸入”(當(dāng)然是先求出對(duì)于輸入點(diǎn)的線性方程中的a值、b值);其次就是分別在X軸,Y軸上的X值、Y值相等的情況,這樣我們就認(rèn)定為一條垂直于X軸或Y軸的直線,則在系統(tǒng)所確定的區(qū)域內(nèi)畫出線性圖;最后就剩下沒有共同點(diǎn)的額點(diǎn)了,對(duì)于這我們直接以圖片框的邊界作為X軸和Y軸(認(rèn)為這樣方便畫圖),然后根據(jù)算出的a值、b值和系統(tǒng)求出的線性方程,自動(dòng)生成圖像。2) 主要技術(shù)問(wèn)題或難題的解決方法在這個(gè)程序

8、設(shè)計(jì)的過(guò)程中,我們遇到了不少的問(wèn)題,最主要的問(wèn)題就在怎樣畫圖,因?yàn)橹拔覀冞€沒遇到過(guò)這樣的問(wèn)題,鑒于這個(gè)問(wèn)題,我們盡量勤快點(diǎn)地去問(wèn)問(wèn)講師的意見,并且不乏地去圖書館去借閱相關(guān)我們課題的書籍,而且我們還有自己的VB書(主要是line語(yǔ)句),根據(jù)這幾個(gè)方式,我們基本上解決了我們面對(duì)的問(wèn)題。3) 亮點(diǎn)或創(chuàng)新點(diǎn)的實(shí)現(xiàn)本次所做的編程中,我們充分運(yùn)用了所學(xué)的知識(shí),比如“If語(yǔ)句”、“For語(yǔ)句”、“MsgBox語(yǔ)句”和某些控件的有效性屬性。這些都是通過(guò)反復(fù)運(yùn)行測(cè)試做出的結(jié)果,因?yàn)樵谶@其中我們的不足之處還是有很多很多的,例如:在還沒輸入要畫線的點(diǎn)之前,就可以畫線了,那么在那些控件之間就產(chǎn)生了矛盾(沒點(diǎn)就能畫出

9、線性圖?),所以我們使用了控件的有效性這一屬性等等。第4章 結(jié)束語(yǔ)最小二乘法是指使因變量估計(jì)值與實(shí)測(cè)值間的相對(duì)誤差平方和為最小。在研究?jī)蓚€(gè)變量之間的關(guān)系時(shí),我們可以用回歸分析的方法進(jìn)行分析。當(dāng)確定了描述兩個(gè)變量之間的回歸模型后,就可以使用最小二乘法估計(jì)模型中的參數(shù),進(jìn)而建立數(shù)學(xué)模型,然后通過(guò)MATLAB求解模型。 通過(guò)本文實(shí)例模型(非多項(xiàng)式形式 )的求解,我們學(xué)會(huì)了怎樣從給定的二維數(shù)據(jù)出發(fā),尋找一個(gè)簡(jiǎn)單合理的函數(shù)來(lái)擬合給定的一組看上去雜亂無(wú)章的數(shù)據(jù)。如何巧妙地運(yùn)用最小二乘法解決數(shù)據(jù)擬合問(wèn)題,這不僅對(duì)我們?cè)诮窈蟮膶W(xué)習(xí)有一定的幫助,而且在生產(chǎn)實(shí)踐、科學(xué)實(shí)驗(yàn)中也起到了一定的作用。課題設(shè)計(jì)時(shí)VB代碼編

10、寫復(fù)雜、冗長(zhǎng),稍一不慎就會(huì)出錯(cuò),我們調(diào)試了好多次,失敗了好多次,而自己仔細(xì)想想,歸根究底還是在于自己心太浮躁,沒有耐心。VB的編程是一項(xiàng)不易的工作,沒有一顆平靜的心是完成不了的。我想,將來(lái)做許多事,也需要保持這么一種平和的心態(tài),它是一種個(gè)人綜合素質(zhì),是我們制勝的關(guān)鍵。在課題設(shè)計(jì)的過(guò)程中,VB代碼的編寫即設(shè)計(jì)的主過(guò)程無(wú)疑是一個(gè)難點(diǎn),這部分內(nèi)容雖然難,但在我們能力范圍之內(nèi)。而最大的難點(diǎn)在于,項(xiàng)目設(shè)計(jì)中需要根據(jù)用戶提供的坐標(biāo)點(diǎn)來(lái)生成一次模擬曲線,剛遇到這個(gè)問(wèn)題時(shí),根本無(wú)法下手,最后還是到圖書館、網(wǎng)上查閱了相關(guān)資料才解決了這一難題。從中我領(lǐng)悟到,親自行動(dòng)才是解決問(wèn)題最好的方法,實(shí)踐就是一切。不管困難有

11、多大,沒有切實(shí)的行動(dòng)時(shí)不行的。而這前提必然是自己要有解決問(wèn)題的決心與堅(jiān)忍不拔的毅力。此次項(xiàng)目對(duì)我來(lái)說(shuō)是困難的,但無(wú)論怎樣,我還是完成了,這說(shuō)明一點(diǎn),其實(shí)沒有克服不了的困難。無(wú)論身處于怎樣的境地,我們都要勇于面對(duì),并想辦法解決,因?yàn)樽约焊緹o(wú)法逃避。 參考文獻(xiàn)參考內(nèi)容為:Visual Basic 程序設(shè)計(jì)教程第十章中10.1 圖形操作Visual basic 6學(xué)習(xí)指南 張志軍著 第二章2.3創(chuàng)建用戶界面數(shù)值分析科學(xué)出版社 附錄程序代碼如下:Dim x() As Single, y() As Single, i As Integer, n As Integer, m As IntegerDim

12、sumx As Double, sumy As Double, xaver As Double, yaver As DoubleDim xy As Double, x2 As DoubleDim a As Double, b As DoubleDim xmax As Double, xmin As DoubleDim ymax As Double, ymin As DoublePrivate Sub Command1_Click() Randomize n = InputBox("請(qǐng)輸入坐標(biāo)點(diǎn)個(gè)數(shù):") If n = 0 Then MsgBox "請(qǐng)輸入坐標(biāo)點(diǎn)個(gè)數(shù)

13、" Command1.Enabled = True ElseIf n = 1 Then MsgBox "單點(diǎn)無(wú)法擬合,請(qǐng)重新輸入" Exit Sub Command1.Enabled = False Command2.Enabled = False Command3.Enabled = False Command4.Enabled = True Else Command1.Enabled = False Command2.Enabled = True Command4.Enabled = True End If ReDim x(n) ReDim y(n) For

14、i = 1 To n x(i) = InputBox("請(qǐng)輸入第" & i & "個(gè)點(diǎn)的橫坐標(biāo)") sumx = sumx + x(i) Text1 = Text1 & "第" & i & "個(gè)點(diǎn):(" & x(i) y(i) = InputBox("請(qǐng)輸入第" & i & "個(gè)點(diǎn)的縱坐標(biāo)") sumy = sumy + y(i) Text1 = Text1 & "," & y

15、(i) & " )" & vbCrLf Next iEnd SubPrivate Sub Command2_Click() Picture1.Cls Picture1.DrawWidth = 1 Command2.Enabled = False Command3.Enabled = True Command4.Enabled = True xmax = x(1): xmin = x(1) ymax = y(1): ymin = y(1) For i = 2 To n If xmax < x(i) Then xmax = x(i) End If If x

16、min > x(i) Then xmin = x(i) End If Next i For i = 2 To n If ymax < y(i) Then ymax = y(i) End If If ymin > y(i) Then ymin = y(i) End If Next i If xmax = xmin Then Picture1.Scale (xmin * 0.5, ymax + 0.2 * (ymax - ymin)-(xmin * 1.5, ymin - 0.2 * (ymax - ymin) zbz xmin * 0.5, ymax + 0.2 * (ymax

17、 - ymin), xmin * 1.5, ymin - 0.2 * (ymax - ymin) ElseIf ymax = ymin Then Picture1.Scale (xmin - 0.2 * (xmax - xmin), ymax * 1.5)-(xmax + 0.2 * (xmax - xmin), ymin * 0.5) zbz xmin - 0.2 * (xmax - xmin), ymax * 1.5, xmax + 0.2 * (xmax - xmin), ymin * 0.5 Else Picture1.Scale (xmin - 0.2 * (xmax - xmin)

18、, ymax + 0.2 * (ymax - ymin)-(xmax + 0.2 * (xmax - xmin), ymin - 0.2 * (ymax - ymin) zbz xmin - 0.2 * (xmax - xmin), ymax + 0.2 * (ymax - ymin), xmax + 0.2 * (xmax - xmin), ymin - 0.2 * (ymax - ymin) End If Picture1.DrawWidth = 5 For i = 1 To n Picture1.PSet (x(i), y(i), vbRed Next iEnd SubPrivate S

19、ub Command3_Click() Command3.Enabled = False Command4.Enabled = True Picture2.Cls xaver = sumx / n yaver = sumy / n For i = 1 To n xy = xy + x(i) * y(i) x2 = x2 + x(i) * x(i) Next i b = (xy - n * xaver * yaver) / (x2 - n * xaver * xaver) a = yaver - b * xaver a = Left(a, 6) b = Left(b, 6) Picture2.P

20、rint "y=" & b & "x+" & a If xmax = xmin Then Picture1.Scale (xmin * 0.5, ymax + 0.2 * (ymax - ymin)-(xmin * 1.5, ymin - 0.2 * (ymax - ymin) zbz xmin * 0.5, ymax + 0.2 * (ymax - ymin), xmin * 1.5, ymin - 0.2 * (ymax - ymin) Picture1.Line (xmax, ymax + 0.2 * (ymax - ymi

21、n)-(xmax, ymin - 0.2 * (ymax - ymin), vbBlue ElseIf ymax = ymin Then Picture1.Scale (xmin - 0.2 * (xmax - xmin), ymax * 1.5)-(xmax + 0.2 * (xmax - xmin), ymin * 0.5) zbz xmin - 0.2 * (xmax - xmin), ymax * 1.5, xmax + 0.2 * (xmax - xmin), ymin * 0.5 Picture1.Line (xmin - 0.2 * (xmax - xmin), ymax)-(x

22、max + 0.2 * (xmax - xmin), ymin), vbBlue Else Picture1.Scale (xmin - 0.2 * (xmax - xmin), ymax + 0.2 * (ymax - ymin)-(xmax + 0.2 * (xmax - xmin), ymin - 0.2 * (ymax - ymin) zbz xmin - 0.2 * (xmax - xmin), ymax + 0.2 * (ymax - ymin), xmax + 0.2 * (xmax - xmin), ymin - 0.2 * (ymax - ymin) Picture1.Lin

23、e (xmin - 0.2 * (xmax - xmin), b * (xmin - 0.2 * (xmax - xmin) + a)-(xmax + 0.2 * (xmax - xmin), b * (xmax + 0.2 * (xmax - xmin) + a), vbBlue End If End SubPrivate Sub Command4_Click() Text1.Text = "" Picture1.Cls Picture2.Cls Command1.Enabled = True Command2.Enabled = False Command3.Enabled = False Command4.Enabled = FalseEnd SubPrivate Sub Command5_Click() EndEnd SubPrivate Sub Form_Activate() Dim s As Integer, l As Single Dim p1 As Single, p2 As Single p1 = ScaleWidth: p2 = ScaleHeight l = 255 / p1 For s = 0 To p1 Line (s, 0)-(s,

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論