VB計算程序課程設(shè)計報告_第1頁
VB計算程序課程設(shè)計報告_第2頁
VB計算程序課程設(shè)計報告_第3頁
VB計算程序課程設(shè)計報告_第4頁
VB計算程序課程設(shè)計報告_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

3、定絕熱溫升和等效時間的關(guān)系式。第1章 最小二乘法1) 理論依據(jù)最小二乘的思想就是要使得觀測點(diǎn)和估計點(diǎn)的距離的平方和達(dá)到最小.這里的“二乘”指的是用平方來度量觀測點(diǎn)與估計點(diǎn)的遠(yuǎn)近(在古漢語中“平方”稱為“二乘”),“最小”指的是參數(shù)的估計值要保證各個觀測點(diǎn)與估計點(diǎn)的距離的平方和達(dá)到最小.對于回歸模型y=S(x),若()(i=1,2,3···m)為收集到的觀測數(shù)據(jù),則應(yīng)該用來估計,這里是()(i=1,2,3···m)的估計值。它們之間距離的平方和就是。進(jìn)而最小二乘估計量就是使= (1)達(dá)到最小值的參數(shù)。2) 線性擬合分析給定一組測量數(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)問題。由求多遠(yuǎn)函數(shù)極值的必要條件,有若記,則可改寫為 (3)此方程成為法方程。它也可以寫成矩陣形式由于,線性無關(guān),故,方程組(3)存在唯一解 (i=1,2,3···n),從而得到函數(shù)f(x)的最小二乘法解為可以證明,這

5、樣得到的對于任何多項(xiàng)式形式的,都有故確實(shí)所求最小二乘解。摘自數(shù)值分析3) 非線性擬合分析我們可通過變數(shù)變換將其化為線性模型。利用最小二乘線性擬合確定其系數(shù),再利用逆變換給出原問題的曲線擬合函數(shù)。 第2章 系統(tǒng)設(shè)計1) 采用的軟件及開發(fā)平臺Microsoft Visual Basic 6.02) 項(xiàng)目的總體方案3) 項(xiàng)目的詳細(xì)設(shè)計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(生成線性方程):計算輸入坐標(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四號Label1Caption 線性方程為:調(diào)試運(yùn)行截圖:第3章 設(shè)計實(shí)現(xiàn)1) 主要功

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

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

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

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

11、多大,沒有切實(shí)的行動時不行的。而這前提必然是自己要有解決問題的決心與堅忍不拔的毅力。此次項(xiàng)目對我來說是困難的,但無論怎樣,我還是完成了,這說明一點(diǎn),其實(shí)沒有克服不了的困難。無論身處于怎樣的境地,我們都要勇于面對,并想辦法解決,因?yàn)樽约焊緹o法逃避。 參考文獻(xiàn)參考內(nèi)容為:Visual Basic 程序設(shè)計教程第十章中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("請輸入坐標(biāo)點(diǎn)個數(shù):") If n = 0 Then MsgBox "請輸入坐標(biāo)點(diǎn)個數(shù)

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

評論

0/150

提交評論