已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
直線擬合一、功能本題目重要是用于將實(shí)驗(yàn)中得到的具有線性特征的一組數(shù)據(jù)通過最小二乘法擬合成直線,求出其直線方程和繪制出該直線的圖形。二、詳細(xì)設(shè)計(jì)本題目的程序設(shè)計(jì)由三個(gè)窗體組成。在Form1中,有1個(gè)框架控件、1個(gè)標(biāo)簽控件、2個(gè)命令按鈕和1個(gè)由6個(gè)單選按鈕組成的控件數(shù)組。單選按鈕控件數(shù)組用來選擇要輸入的數(shù)據(jù)組數(shù),當(dāng)選擇好后,單擊“確定”按鈕,就可以進(jìn)入下一個(gè)窗體。單擊“取消”按鈕則退出程序Form1的代碼見附件。在Form2中有2個(gè)命令按鈕、20個(gè)文本框(每10個(gè)組成一個(gè)控件數(shù)組)、12個(gè)標(biāo)簽控件和許多直線組成。在文本框中輸入實(shí)驗(yàn)數(shù)據(jù)后,點(diǎn)擊“確定”按鈕,若數(shù)據(jù)沒有全部輸入,則出現(xiàn)消息框,提醒沒有完全輸入。若已經(jīng)完全輸入,則顯示Form3,隱藏Form2。與此同時(shí),對(duì)實(shí)驗(yàn)數(shù)據(jù)計(jì)算,得出擬合直線的截距和斜率,并在Form3的標(biāo)簽控件1中體現(xiàn);根據(jù)所得的斜率和截距得到擬合直線方程,并在Form3的標(biāo)簽2中體現(xiàn);還可以在Form3中繪出擬合直線和每個(gè)實(shí)驗(yàn)點(diǎn)(用綠色),根據(jù)實(shí)驗(yàn)數(shù)據(jù)調(diào)整坐標(biāo)系統(tǒng),畫出擬合直線。Form2的代碼見附件。三、調(diào)試一開始,我是在三樓上機(jī),用的是VB6.0,遇到的第一個(gè)問題是全局變量的設(shè)置問題。我不知道是我一個(gè)暑假把學(xué)的都忘了,最后終于在課本的幫助下成功做出來了。第二個(gè)問題是顯示擬合直線。一開始,我在Form3中畫了一個(gè)圖片框,運(yùn)行時(shí)總顯示不了直線,后來索性將它刪掉,再次運(yùn)行時(shí)終于能出現(xiàn)直線,可是直線的位置與設(shè)想相差太大了。連續(xù)嘗試了1個(gè)多星期后,終于明白了,原來我直接利用得到的直線方程的點(diǎn)的坐標(biāo)在窗體上畫直線是不對(duì)的,因?yàn)槲宜嫷淖鴺?biāo)軸的單位長度和窗體的單位長度不相等,之間需要一定的轉(zhuǎn)換。于是再次修改代碼,可還是沒有出現(xiàn)預(yù)想的情況。重新檢查后,沒有發(fā)現(xiàn)程序錯(cuò)誤。我又嘗試輸入一組特殊數(shù)據(jù):(1,3)、(2,5)、(3,7)、(4,9)、(5,11),它們的擬合直線應(yīng)該是Y=2X+1,斜率是2,截距是1,可運(yùn)行后的結(jié)果讓我大吃一驚,斜率是-0.2,截距是-0.1。我再次檢查了數(shù)據(jù)計(jì)算部分的代碼,沒有發(fā)現(xiàn)錯(cuò)誤,請(qǐng)教了好幾位同學(xué)也沒有解決問題,如此又郁悶了一個(gè)星期。不知什么時(shí)候,心中有種感覺書上有錯(cuò)誤。找來大學(xué)物理實(shí)驗(yàn)課本,果不其然,在第三十七頁找到類似的公式,經(jīng)計(jì)算,終于發(fā)現(xiàn)課程設(shè)計(jì)課本上第211頁 “令 ”中的“+”號(hào)應(yīng)改為“-”。修改后,在調(diào)試過程中再也沒出現(xiàn)什么大的問題。四、輸入輸出數(shù)據(jù)當(dāng)選擇5組數(shù)據(jù)時(shí),:(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)。運(yùn)行結(jié)果:截距A=7.9171725,斜率B=0.9041657,直線方程為Y=0.9041657X+7.9171725,坐標(biāo)比例:1:截距A=74.72493,斜率B=-0.199323,直線方程為Y=74.7293X0.199323,坐標(biāo)比例:1:截距A=41.1017,斜率B=-0.4983051,直線方程為Y=41.1017X+0.4983051,坐標(biāo)比例:1當(dāng)選擇6組數(shù)據(jù)時(shí),:(54,76)、(65,83)、(87,89)、(82,61)、(34,22)、(44,88);:(34,56)、(24,89)、(29,59)、(78,61)、(94,57)、(44,88);:(58,26)、(44,77)、(55,89)、(67,65)、(76,98)、(44,88)。運(yùn)行結(jié)果:截距A=33.64924,斜率B=0.5931818,直線方程為Y=0.5931818X+33.64924,坐標(biāo)比例:1:截距A=80.64387,斜率B=-0.2735675,直線方程為Y=-0.2735675X8+0.64387,坐標(biāo)比例:1:截距A=69.0728,斜率B=8.381743E-02,直線方程為Y=8.381743E-02X+69.0728,坐標(biāo)比例:1五、課程設(shè)計(jì)總結(jié)經(jīng)過此次程序設(shè)計(jì),使我對(duì)許多事情的看法有了改變。記得上學(xué)期學(xué)VB的時(shí)候,感覺VB很簡單,老師布置的作業(yè)也很快完成,多余的時(shí)間就在偷偷玩游戲。剛知道自己要做直線擬合這道題時(shí),翻了一下書,感覺很簡單,相比選擇難題的同學(xué),我心中不免有些得意,心想:快速做完后,再做一個(gè),說不定能得個(gè)優(yōu)。剛開始事情就有點(diǎn)不順,但也沒什么大問題,一直到寫完所有程序,開始運(yùn)行的時(shí)候,才發(fā)覺最糟糕的事情出現(xiàn)了運(yùn)行中沒有出現(xiàn)擬合直線,其他的問題都好辦,可最終顯示不出擬合直線就是失敗,眼看著交作業(yè)的日子越來越近,心中卻一點(diǎn)思緒都沒有,而此時(shí)我又在金工實(shí)習(xí),再加上二級(jí)考試的臨近,我急得像熱鍋上的螞蟻,不知怎么辦才好。此時(shí),我才真正體會(huì)到編寫一個(gè)真正有用的程序是多么的困難,那是要花上許多的心血才得來的。事情終于有了轉(zhuǎn)機(jī),在我棄用圖片框后終于發(fā)現(xiàn)要顯示滿足要求的直線首先要進(jìn)行坐標(biāo)轉(zhuǎn)換,窗體是以緹為單位,而平面直角坐標(biāo)系以“1”為單位,二者需要轉(zhuǎn)換。明白這一點(diǎn)之后,我終于能在窗體上顯示出直線了,然而,并非我所期望的直線。我于是假設(shè)直線斜率為2,截距為1,得到一組數(shù)據(jù),將它們輸入Form2的文本框中,結(jié)果發(fā)現(xiàn)得到的直線斜率和截距不是2和1,而是0.02和0.01左右小的數(shù)字,我暈倒。檢查一便代碼后發(fā)覺與書上提供的公式相吻合,我沒有錯(cuò),可程序的運(yùn)行結(jié)果卻如此荒謬,難道注定我此次設(shè)計(jì)不合格,明年再來一次嗎?后來,我終于對(duì)書本產(chǎn)生懷疑,正是這一懷疑給一切帶來了生機(jī),我找出大學(xué)物理實(shí)驗(yàn)課本,找到相關(guān)內(nèi)容,終于發(fā)現(xiàn)程序設(shè)計(jì)課本錯(cuò)了,一個(gè)減號(hào)被打印成加號(hào)。找到問題所在后,一切便盡在掌握之中。六、窗體圖示七附件Form1:Private Sub Command1_Click() 顯示第二個(gè)窗體Form1.HideForm2.ShowForm3.Hidezxnh = MsgBox(你必須完全輸入所選的項(xiàng)目! & Chr(10) & Chr(13) & _ 否則程序?qū)?huì)出錯(cuò)!, 48, 直線擬合)End SubPrivate Sub Command2_Click() 結(jié)束程序EndEnd Sub使第二個(gè)窗體的文本框按照第一個(gè)窗體給出的數(shù)據(jù)組數(shù)顯示Private Sub Option1_Click()Form2.Label6.Enabled = FalseForm2.Label7.Enabled = FalseForm2.Label8.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 = TrueForm2.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.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 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 = &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 = True 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 = TrueForm2.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 = &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 = True Form2.Text1(n).BackColor = &HFFFFFF Form2.Text2(n).Enabled = True Form2.Text2(n).BackColor = &HFFFFFFNextEnd SubForm2:Option Base 1Dim m As IntegerDim X(10) As SingleDim Y(10) As SinglePrivate Sub Command1_Click() 進(jìn)入第三個(gè)繪圖窗體Form1.HideForm2.HideForm3.ShowDim A As Single 截距Dim B As Single 斜率Dim c As SingleDim d As SingleDim e As SingleDim f As SingleDim W As SingleDim R As SingleDim T As Single討論點(diǎn)的個(gè)數(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).Enabled = True Then m = 9If Form2.Text1(10).Enabled = True Then m = 10對(duì)點(diǎn)的x.y坐標(biāo)進(jìn)行賦值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 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) + c d = X(n) * X(n) + d e = X(n) * Y(n) + e f = Y(n) + fNextA = (e * c - f * d) / (c * c - m * d) 計(jì)算直線的截距B = (c * f - m * e) / (c * c - m * d) 計(jì)算直線的斜率打印數(shù)據(jù)方程的位置Form3.CurrentX = 200Form3.CurrentY = 350Form3.Print 直線斜率(B)= & BForm3.CurrentX = 200Form3.CurrentY = 580Form3.Print 直線截距(A)= & AForm3.CurrentX = 200Form3.CurrentY = 810Form3.Print 直線方程為:; Spc(3); Y= & B & X+ & A在坐標(biāo)圖上打印出點(diǎn)來For n = 1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 感恩老師發(fā)言稿14篇
- 安全主題教育活動(dòng)方案
- 汽車租賃服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 連云港做實(shí)“一帶一路交匯點(diǎn)”建設(shè)的對(duì)策思考
- 公司財(cái)務(wù)知識(shí)分享
- 基于生物信息學(xué)探索妊娠期糖尿病與尿苷代謝相關(guān)的關(guān)鍵基因
- 《駱駝祥子》 上課課件
- 二零二五版企業(yè)向個(gè)人發(fā)放汽車貸款合同示例3篇
- 科創(chuàng)孵化器項(xiàng)目融資報(bào)告
- 建立強(qiáng)大的醫(yī)院管理團(tuán)隊(duì)
- 2024-2025學(xué)年人教版三年級(jí)(上)英語寒假作業(yè)(九)
- 《招標(biāo)投標(biāo)法》考試題庫200題(含答案)
- 河南退役軍人專升本計(jì)算機(jī)真題答案
- 湖南省長沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 2025年全國高考體育單招考試政治模擬試卷試題(含答案詳解)
- 駕駛證學(xué)法減分(學(xué)法免分)試題和答案(50題完整版)1650
- 2024年林地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 物流有限公司安全生產(chǎn)專項(xiàng)整治三年行動(dòng)實(shí)施方案全國安全生產(chǎn)專項(xiàng)整治三年行動(dòng)計(jì)劃
- 小學(xué)數(shù)學(xué)五年級(jí)上冊(cè)奧數(shù)應(yīng)用題100道(含答案)
- 2025屆江蘇省13市高三最后一卷生物試卷含解析
評(píng)論
0/150
提交評(píng)論