




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Visual Basic程序設計課程設計報告設計題目 直線擬合 題目難度 四星級 姓 名 蔣龍鑫 學 號 9141010F0309 指導教師 申 屠 德 忠 提交日期 4月15號 目 錄一、題目描述與功能要求1二、程序設計1(一)計算模型或算法實行1(二)模塊設計(窗體界面與代碼)2窗體1的設計.3窗體2的設計7窗體3的設計12三、算例演示14四、參考文獻15五、課程設計總結(jié)15I一、題目描述與功能要求 1題目描述 本題目重要是用于將實驗中得到的具有線性特征的一組數(shù)據(jù)通過最小二乘法擬合成直線,求出其直線方程和繪制出該直線的圖形。也就是尋找一條直線使這些離散的點盡可能平均的位于該直線的兩邊,它對
2、于尋找數(shù)據(jù)的規(guī)律有很大的幫助,是一個比較實用的程序。2功能要求:(1)運行程序中,首先顯示如下圖窗體1的“直線擬合”窗口,從中選擇要擬合數(shù)據(jù)的組數(shù)。單擊“確定”按鈕進入“數(shù)據(jù)輸入”窗口。(2)“數(shù)據(jù)輸入”窗口中有10對文本框,用于輸入最多10組實驗數(shù)據(jù)。根據(jù)在“直線擬合”窗口的選擇不同,這10對文本框只有指定數(shù)目的文本框可用。輸入指定的數(shù)據(jù),然后單擊“確定”按鈕。如果數(shù)據(jù)未完全輸入,則顯示錯誤提示的消息框。(3)如果數(shù)據(jù)輸入正確,在“數(shù)據(jù)輸入”窗口中單擊“確定”按鈕之后,程序進入“直線參數(shù)與圖形”窗口,在此窗口中,程序根據(jù)輸入的數(shù)據(jù)自動計算擬合直線方程的參數(shù),并將系數(shù)和方程顯示在窗口頂部。在窗
3、口的繪圖區(qū)繪制直線圖形。二、程序設計(一)計算模型或算法實行假設實驗中得到n個點,P1(X1,Y1),P2(X2,Y2),Pn(Xn,Yn),用i表示第i個點.由于各種誤差的存在,這些數(shù)據(jù)點不可能完全在一條直線上。如果我們能找到一條直線,使這n個點到該直線的距離之平方和最小,則該直線就是用最小二乘法擬合出來的直線。設擬合的直線方程為F(X)=Y=bX+a,由于擬合出來的直線斜率是固定的,我們可以用每一個數(shù)據(jù)點與直線在Y方向上的“殘差”來定義,即殘差Yi=F(Xi)-Yi,可得: (Yi)2=(F(Xi)-Yi)2=(bXi+a-Yi)2根據(jù)最小二乘法原理,(bXi+a-Yi)2取極小值時,即為
4、殘差最小,這時確定的直線即為擬合的直線。上式是一個二元函數(shù)求極值的問題,可分別對自變量a與b求偏導數(shù),可易得: na+bXi =Yi aXi+b(Xi)2=(XiYi) 從而得到公式:由上公式可知,我們可用n個點的坐標確定直線方程的系數(shù)a與b,得到方程并將方程擬合出來.本題目的程序設計由三個窗體組成。在Form1中,有1個框架控件、1個標簽控件、2個命令按鈕和1個由6個單選按鈕組成的控件數(shù)組。單選按鈕控件數(shù)組用來選擇要輸入的數(shù)據(jù)組數(shù),當選擇好后,單擊“確定”按鈕,就可以進入下一個窗體。單擊“取消”按鈕則退出程序Form1的代碼見附件。在Form2中有2個命令按鈕、20個文本框(每10個組成一個
5、控件數(shù)組)、12個標簽控件和許多直線組成。在文本框中輸入實驗數(shù)據(jù)后,點擊“確定”按鈕,若數(shù)據(jù)沒有全部輸入,則出現(xiàn)消息框,提醒沒有完全輸入。若已經(jīng)完全輸入,則顯示Form3,隱藏Form2。與此同時,對實驗數(shù)據(jù)計算,得出擬合直線的截距和斜率,并在Form3的標簽控件1中體現(xiàn);根據(jù)所得的斜率和截距得到擬合直線方程,并在Form3的標簽2中體現(xiàn);還可以在Form3中繪出擬合直線和每個實驗點(用綠色),根據(jù)實驗數(shù)據(jù)調(diào)整坐標系統(tǒng),畫出擬合直線。Form2的代碼見附件。(二)模塊設計(窗體界面與代碼)本題目的程序設計由3個模塊組成,其中窗體模塊3個。序號模塊名稱模塊類型模塊功能1 Form1窗體模塊選擇要
6、輸入的數(shù)據(jù)組數(shù),當選擇好后,單擊“確定”按鈕,就可以進入下一個窗體;單擊“取消”按鈕則退出程序2 Form2窗體模塊輸入實驗數(shù)據(jù)后,對實驗數(shù)據(jù)計算,得出擬合直線的截距和斜率,根據(jù)所得的斜率和截距得到擬合直線方程。3Form3窗體模塊根據(jù)實驗數(shù)據(jù)調(diào)整坐標系統(tǒng),畫出擬合直線。窗體1的設計 表1 窗體1中控件列表序號控件名稱控件類型LeftTopWidthHeightCaption1Label1標簽控件14401202055375直線擬合程序2Frame1框架控件48060038551455請選擇數(shù)據(jù)組數(shù)3Option1單選框控件3603609752555組4Option2單選框控件36072097
7、52556組5Option3單選框控件36010809752557組6Option4單選框控件25203609752558組7Option5單選框控件25207209752559組8Option6單選框控件2520108097525510組9Command1命令按鈕控件72022801575495確定10Command2命令按鈕控件252022801575495退出表2 窗體1中事件過程列表序號事件過程功能1Option1-click()選擇數(shù)據(jù)組數(shù)為5組2Option2-click()選擇數(shù)據(jù)組數(shù)為6組3Option3-click()選擇數(shù)據(jù)組數(shù)為7組4Option4-click()選擇數(shù)據(jù)
8、組數(shù)為8組5Option5-click()選擇數(shù)據(jù)組數(shù)為9組6Option6-click()選擇數(shù)據(jù)組數(shù)為10組7Command1-click()進入第二個窗體坐標軸的輸入8Command2-click()退出擬合值線的數(shù)據(jù)輸入表3 窗體1中通用過程與函數(shù)列表序號過程與函數(shù)輸入?yún)?shù)輸出參數(shù)功能1MsgBox()以文本向用戶顯示運行過程中的信息,讓用戶單擊按鈕作選擇2Chr()10換行符使消息內(nèi)容在中間某處換行3Chr()13回車符窗體1的代碼Form1Private Sub Command1_Click() '顯示第二個窗體Form1.HideForm2.ShowForm3.Hidez
9、xnh = MsgBox("你必須完全輸入所選的項目!" & Chr(10) & Chr(13) & _ "否則程序?qū)鲥e!", 48, "直線擬合")End SubPrivate Sub Command2_Click() '結(jié)束程序EndEnd Sub'使第二個窗體的文本框按照第一個窗體給出的數(shù)據(jù)組數(shù)顯示Private Sub Option1_Click()Form2.Label6.Enabled = FalseForm2.Label7.Enabled = FalseForm2.Label8
10、.Enabled = FalseForm2.Label9.Enabled = FalseForm2.Label10.Enabled = FalseFor n = 6 To 10 Form2.Text1(n).Enabled = False Form2.Text1(n).BackColor = &H8000000F Form2.Text2(n).Enabled = False Form2.Text2(n).BackColor = &H8000000FNextEnd SubPrivate Sub Option2_Click()Form2.Label6.Enabled = TrueF
11、orm2.Label7.Enabled = FalseForm2.Label8.Enabled = FalseForm2.Label9.Enabled = FalseForm2.Label10.Enabled = FalseForm2.Text1(6).Enabled = TrueForm2.Text1(6).BackColor = &HFFFFFFForm2.Text2(6).Enabled = TrueForm2.Text2(6).BackColor = &HFFFFFFFor n = 7 To 10 Form2.Text1(n).Enabled = False Form2
12、.Text1(n).BackColor = &H8000000F Form2.Text2(n).Enabled = False Form2.Text2(n).BackColor = &H8000000FNextEnd SubPrivate Sub Option3_Click()Form2.Label6.Enabled = TrueForm2.Label7.Enabled = TrueForm2.Label8.Enabled = FalseForm2.Label9.Enabled = FalseForm2.Label10.Enabled = FalseFor n = 6 To 7
13、 Form2.Text1(n).Enabled = True Form2.Text1(n).BackColor = &HFFFFFF Form2.Text2(n).Enabled = True Form2.Text2(n).BackColor = &HFFFFFFNext For n = 8 To 10 Form2.Text1(n).Enabled = False· Form2.Text1(n).BackColor = &H8000000F Form2.Text2(n).Enabled = False Form2.Text2(n).BackColor = &a
14、mp;H8000000FNextEnd SubPrivate Sub Option4_Click()Form2.Label6.Enabled = TrueForm2.Label7.Enabled = TrueForm2.Label8.Enabled = TrueForm2.Label9.Enabled = FalseForm2.Label10.Enabled = FalseFor n = 6 To 8 Form2.Text1(n).Enabled = True Form2.Text1(n).BackColor = &HFFFFFF Form2.Text2(n).Enabled = Tr
15、ue Form2.Text2(n).BackColor = &HFFFFFFNextFor n = 9 To 10 Form2.Text1(n).Enabled = False Form2.Text1(n).BackColor = &H8000000F Form2.Text2(n).Enabled = False Form2.Text2(n).BackColor = &H8000000FNextEnd SubPrivate Sub Option5_Click()Form2.Label6.Enabled = TrueForm2.Label7.Enabled = TrueF
16、orm2.Label8.Enabled = TrueForm2.Label9.Enabled = TrueForm2.Label10.Enabled = FalseForm2.Text1(10).Enabled = FalseForm2.Text1(10).BackColor = &H8000000FForm2.Text2(10).Enabled = FalseForm2.Text2(10).BackColor = &H8000000FFor n = 6 To 9 Form2.Text1(n).Enabled = True Form2.Text1(n).BackColor =
17、&HFFFFFF Form2.Text2(n).Enabled = True Form2.Text2(n).BackColor = &HFFFFFFNextEnd SubPrivate Sub Option6_Click()Form2.Label6.Enabled = TrueForm2.Label7.Enabled = TrueForm2.Label8.Enabled = TrueForm2.Label9.Enabled = TrueForm2.Label10.Enabled = TrueFor n = 6 To 10 Form2.Text1(n).Enabled = Tru
18、e Form2.Text1(n).BackColor = &HFFFFFF Form2.Text2(n).Enabled = True Form2.Text2(n).BackColor = &HFFFFFFNextEnd Sub窗體2的設計表4 窗體2中控件列標序號控件名稱控件類型LeftTopWidthHeightCaption1Label1標簽控件480880495255第1點2Label2標簽控件4801240495255第2點3Label3標簽控件4801600495255第3點4Label4標簽控件4801960495255第4點5Label5標簽控件48023204
19、95255第5點6Label6標簽控件4802680495255第6點7Label7標簽控件4803040495255第7點8Label8標簽控件4803400495255第8點9Label9標簽控件4803760495255第9點10Label10標簽控件4804120575255第10點11Label11標簽控件1320360975255X坐標值:12Label12標簽控件2520360975255Y坐標值:13Text1(1)文本框控件144084073527014Text1(2)文本框控件1440120073527015Text1(3)文本框控件1440156073527016Text
20、1(4)文本框控件1440192073527017Text1(5)文本框控件1440228073527018Text1(6)文本框控件1440264073527019Text1(7)文本框控件1440300073527020Text1(8)文本框控件1440336073527021Text1(9)文本框控件1440372073527022Text1(10)文本框控件1440408073527023Text2(1)文本框控件264084073527024Text2(2)文本框控件2640120073527025Text2(3)文本框控件2640156073527026Text2(4)文本框控件2
21、640192073527027Text2(5)文本框控件2640228073527028Text2(6)文本框控件2640264073527029Text2(7)文本框控件2640300073527030Text2(8)文本框控件2640336073527031Text2(9)文本框控件2640372073527032Text2(10)文本框控件2640408073527033Command1命令按鈕控件48046801335495確定34Command2命令按鈕控件204046801335495返回X1Y1X2Y2BorderStyleBorderWidth35Line1直線控件240240
22、36002401-solid136Line2直線控件24024024044401-solid137Line3直線控件3600240360044401-solid138Line4直線控件1200240120044401-solid139Line5直線控件2400240240044401-solid140Line6直線控件24072036007201-solid141Line7直線控件2404440360044401-solid142Line8直線控件24024012007201-solid1表5 窗體2中事件過程列表序號事件過程功能1Command1-click()進入繪圖窗體,擬合成直線2Co
23、mmand2-click()退出擬合直線的數(shù)據(jù)輸入 表6 窗體2中通用過程與函數(shù)列表序號過程與函數(shù)輸入?yún)?shù)輸出參數(shù)功能1Spc()33個空格組成的字符串返回number個空格組成的字符串 窗體模塊代碼2的 Form2:Option Base 1Dim m As IntegerDim X(10) As SingleDim Y(10) As SinglePrivate Sub Command1_Click() '進入第三個繪圖窗體Form1.HideForm2.HideForm3.ShowDim A As Single '截距Dim B As Single '斜率Dim c
24、 As SingleDim d As SingleDim e As SingleDim f As SingleDim W As SingleDim R As SingleDim T As Single'討論點的個數(shù)If Form2.Text1(5).Enabled = True Then m = 5If Form2.Text1(6).Enabled = True Then m = 6If Form2.Text1(7).Enabled = True Then m = 7If Form2.Text1(8).Enabled = True Then m = 8If Form2.Text1(9)
25、.Enabled = True Then m = 9If Form2.Text1(10).Enabled = True Then m = 10'對點的x.y坐標進行賦值If m = 5 Then For n = 1 To 5 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd IfIf m = 6 Then For n = 1 To 6 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd IfIf m = 7 Then For n = 1 To 7 X(n) = Text1(n).Text
26、Y(n) = Text2(n).Text NextEnd IfIf m = 8 Then For n = 1 To 8 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd IfIf m = 9 Then For n = 1 To 9 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd IfIf m = 10 Then For n = 1 To 10 X(n) = Text1(n).Text Y(n) = Text2(n).Text NextEnd If For n = 1 To m c = X(n)
27、 + c d = X(n) * X(n) + d e = X(n) * Y(n) + e f = Y(n) + fNextA = f/m-(m*e-c*f)*c/m/(m*d-c*c) '計算直線的截距B = (c * f - m * e) / (c * c - m * d) '計算直線的斜率'打印數(shù)據(jù)方程的位置Form3.CurrentX = 200Form3.CurrentY = 350Form3.Print "直線斜率(B)=" & BForm3.CurrentX = 200Form3.CurrentY = 580Form3.Print
28、 "直線截距(A)=" & AForm3.CurrentX = 200Form3.CurrentY = 810Form3.Print "直線方程為:" Spc(3); "Y=" & B & "X+" & A'在坐標圖上打印出點來For n = 1 To m Form3.PSet (360 + 37 * X(n), 5400 - 37 * Y(n), RGB(0, 0, 0)NextW = 5400 - 3700 * B - 37 * AR = 360 + (3700 - 37
29、 * A) / BT = 360 - 37 * A / B'將超出坐標軸的線去掉If A >= 0 Then Form3.Line (360, 5400 - 37 * A)-(4060, W) If W < 1700 Then Form3.Line (R, 1700)-(4060, W), &H8000000F If W > 5400 And B < 0 Then Form3.Line (T, 5400)-(4060, W), &H8000000FElse Form3.Line (360 + (5400 - 37 * A) / B, 5400)-
30、(4060, W) If W < 1700 Then Form3.Line (R, 1700)-(4060, W), &H8000000F If W > 5400 And B < 0 Then Form3.Line (T, 5400)-(4060, W), &H8000000FEnd IfEnd Sub'返回第一個窗體Private Sub Command2_Click()Form1.ShowForm2.HideForm3.HideFor n = 1 To m Text1(n).Text = "" Text2(n).Text = &
31、quot;"NextEnd Sub窗體3的設計 表7 窗體3中控件列表序號控件名稱控件類型LeftTopWidthHeightCaption1Label1標簽控件4801201455255直線參數(shù)(Y=BX+A2Label2標簽控件168013201095255直線(Y-X)圖3Label3標簽控件33605160975135坐標比例:10:14Label4標簽控件17019201801351005Label5標簽控件2203480135135506Label6標簽控件240540013513507Label7標簽控件21605445135135508Label8標簽控件396054
32、451801351009Command1命令按鈕控件60057601455495關(guān)閉10Command2命令按鈕控件240057601455495返回X1Y1X2Y2BorderWidthBorderStyle11Line1直線控件48019512019511 - Solid12Line2直線控件1920195456019511 - Solid13Line3直線控件120195120108011 - Solid 14Line4直線控件45601954560108011 - Solid15Line5直線控件12010804560108011 - Solid 16Line6直線控件12012004
33、560120011 - Solid 17Line7直線控件1201200120564011 - Solid 18Line8直線控件3601320360540011 - Solid 19Line9直線控件3601320240156011 - Solid 20Line10直線控件3601320480156011 - Solid 21Line11直線控件36054004440540011 - Solid 22Line12直線控件456012004560564011 - Solid 23Line13直線控件120056404560564011 - Solid 24Line14直線控件444054004
34、200528011 - Solid25Line15直線控件444054004200552011 - Solid 226Line16直線控件3601700420170011 - Solid 27Line17直線控件3602070420207011 - Solid 28Line18直線控件3602440420244011 - Solid 29Line19直線控件3602810420281011 - Solid 30Line20直線控件3603180420318011 - Solid 31Line21直線控件3603550420355011 - Solid32Line22直線控件3603920420
35、392011 - Solid33Line23直線控件3604290420429011 - Solid34Line24直線控件3604660420466011 - Solid35Line25直線控件3605030420503011 - Solid36Line26直線控件7305340730540011 - Solid 37Line27直線控件110053401100540011 - Solid38Line28直線控件147053401470540011 - Solid 39Line29直線控件184053401840540011 - Solid40Line30直線控件22105340221054
36、0011 - Solid 41Line31直線控件258053402580540011 - Solid 42Line32直線控件295053402950540011 - Solid 43Line33直線控件332053403320540011 - Solid 44Line34直線控件369053403690540011 - Solid45Line35直線控件406053404060540011 - Solid 表8 窗體3中事件過程列表序號事件過程功能1Command1-click()關(guān)閉程序,退出擬合直線2Command2-click()退出擬合直線的繪制過程,重新輸入數(shù)據(jù)窗體模塊代碼3的
37、Form3:Private Sub Command1_Click() '結(jié)束程序EndEnd SubPrivate Sub Command2_Click() '重新開始且將FORM2的數(shù)據(jù)清空Form1.ShowForm2.HideForm3.HideFor n = 1 To 10 Form2.Text1(n).Text = "" Form2.Text2(n).Text = ""NextEnd Sub三、算例演示輸入輸出數(shù)據(jù)當選擇5組數(shù)據(jù)時,:(54,76)、(65,83)、(87,89)、(82,61)、(34,22);:(34,56)、(24,89)、(29,59)、(78,61)、(94,57);:(58,26)、(44,77)、(55,89)、(67,65)、(76,98)。運行結(jié)果:截距A=7.9171725,斜率B=0.9041657,直線方程為Y=0.9041657X+7.9171725,坐標比例:×1:截距A=74.72493,斜率B=-0.199323,直線
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年高中地理上學期第4周 晨昏線、地方時教學設計 湘教版必修1
- 23 祖先的搖籃 教學設計-2024-2025學年統(tǒng)編版語文二年級下冊
- Module 9 Unit 2 Happy birthday (教學設計) -2024-2025學年外研版(一起)英語一年級上冊
- 2023七年級數(shù)學上冊 第五章 一元一次方程2 求解一元一次方程第3課時 解含分母的一元一次方程教學設計 (新版)北師大版
- Unit 4 My Favourite Subject Section A 1a~Pronunciation教學設計 2024-2025學年人教版英語七年級上冊
- 《9的乘法口訣》(教學設計)-2024-2025學年二年級上冊數(shù)學蘇教版
- 2024秋八年級數(shù)學上冊 第十五章 分式15.3 分式方程 2解分式方程教學設計(新版)新人教版
- 《乒乓變奏曲》(教案)-2023-2024學年人教版(2012)音樂二年級下冊
- Unit2 English and Chinese Get started (教學設計)-2024-2025學年教科版(2024)英語三年級上冊
- 茶道養(yǎng)生企業(yè)創(chuàng)業(yè)
- 生物質(zhì)能源綜合利用項目可行性分析報告
- 《印度文化與歷史:大學人文課程教案》
- 老年防詐騙知識講座課件
- 第11課《山地回憶》公開課一等獎創(chuàng)新教學設計
- 【MOOC】《學術(shù)交流英語》(東南大學)章節(jié)中國大學慕課答案
- 《建筑基坑工程監(jiān)測技術(shù)標準》(50497-2019)
- 2022年00642《傳播學概論》復習資料
- 雙室浮動床除鹽水系統(tǒng)程序控制設計
- 鋁合金化學成分表
- 村級基本公共衛(wèi)生考核評分表
- 外拉線內(nèi)懸浮抱桿分解組塔計算
評論
0/150
提交評論