vb课程设计报告直线拟合.docx

上传人:b****6 文档编号:15456710 上传时间:2023-07-04 格式:DOCX 页数:14 大小:62.79KB
下载 相关 举报
vb课程设计报告直线拟合.docx_第1页
第1页 / 共14页
vb课程设计报告直线拟合.docx_第2页
第2页 / 共14页
vb课程设计报告直线拟合.docx_第3页
第3页 / 共14页
vb课程设计报告直线拟合.docx_第4页
第4页 / 共14页
vb课程设计报告直线拟合.docx_第5页
第5页 / 共14页
vb课程设计报告直线拟合.docx_第6页
第6页 / 共14页
vb课程设计报告直线拟合.docx_第7页
第7页 / 共14页
vb课程设计报告直线拟合.docx_第8页
第8页 / 共14页
vb课程设计报告直线拟合.docx_第9页
第9页 / 共14页
vb课程设计报告直线拟合.docx_第10页
第10页 / 共14页
vb课程设计报告直线拟合.docx_第11页
第11页 / 共14页
vb课程设计报告直线拟合.docx_第12页
第12页 / 共14页
vb课程设计报告直线拟合.docx_第13页
第13页 / 共14页
vb课程设计报告直线拟合.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

vb课程设计报告直线拟合.docx

《vb课程设计报告直线拟合.docx》由会员分享,可在线阅读,更多相关《vb课程设计报告直线拟合.docx(14页珍藏版)》请在冰点文库上搜索。

vb课程设计报告直线拟合.docx

vb课程设计报告直线拟合

直线拟合

一、功能

本题目重要是用于将实验中得到的具有线性特征的一组数据通过最小二乘法拟合成直线,求出其直线方程和绘制出该直线的图形。

二、详细设计

本题目的程序设计由三个窗体组成。

在Form1中,有1个框架控件、1个标签控件、2个命令按钮和1个由6个单选按钮组成的控件数组。

单选按钮控件数组用来选择要输入的数据组数,当选择好后,单击“确定”按钮,就可以进入下一个窗体。

单击“取消”按钮则退出程序

Form1的代码见附件。

在Form2中有2个命令按钮、20个文本框(每10个组成一个控件数组)、12个标签控件和许多直线组成。

在文本框中输入实验数据后,点击“确定”按钮,若数据没有全部输入,则出现消息框,提醒没有完全输入。

若已经完全输入,则显示Form3,隐藏Form2。

与此同时,对实验数据计算,得出拟合直线的截距和斜率,并在Form3的标签控件1中体现;根据所得的斜率和截距得到拟合直线方程,并在Form3的标签2中体现;还可以在Form3中绘出拟合直线和每个实验点(用绿色),根据实验数据调整坐标系统,画出拟合直线。

Form2的代码见附件。

三、调试

一开始,我是在三楼上机,用的是VB6.0,遇到的第一个问题是全局变量的设置问题。

我不知道是我一个暑假把学的都忘了,最后终于在课本的帮助下成功做出来了。

第二个问题是显示拟合直线。

一开始,我在Form3中画了一个图片框,运行时总显示不了直线,后来索性将它删掉,再次运行时终于能出现直线,可是直线的位置与设想相差太大了。

连续尝试了1个多星期后,终于明白了,原来我直接利用得到的直线方程的点的坐标在窗体上画直线是不对的,因为我所画的坐标轴的单位长度和窗体的单位长度不相等,之间需要一定的转换。

于是再次修改代码,可还是没有出现预想的情况。

重新检查后,没有发现程序错误。

我又尝试输入一组特殊数据:

(1,3)、(2,5)、(3,7)、(4,9)、(5,11),它们的拟合直线应该是Y=2X+1,斜率是2,截距是1,可运行后的结果让我大吃一惊,斜率是-0.2,截距是-0.1。

我再次检查了数据计算部分的代码,没有发现错误,请教了好几位同学也没有解决问题,如此又郁闷了一个星期。

不知什么时候,心中有种感觉——书上有错误。

找来大学物理实验课本,果不其然,在第三十七页找到类似的公式,经计算,终于发现课程设计课本上第211页“令

”中的“+”号应改为“-”。

修改后,在调试过程中再也没出现什么大的问题。

四、输入输出数据

当选择5组数据时,

Ⅰ:

(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)。

运行结果:

Ⅰ:

截距A=7.9171725,斜率B=0.9041657,直线方程为Y=0.9041657X+7.9171725,坐标比例:

×1

Ⅱ:

截距A=74.72493,斜率B=-0.199323,直线方程为Y=74.7293X-0.199323,坐标比例:

×1

Ⅲ:

截距A=41.1017,斜率B=-0.4983051,直线方程为Y=41.1017X+0.4983051,坐标比例:

×1

当选择6组数据时,

Ⅰ:

(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)。

运行结果:

Ⅰ:

截距A=33.64924,斜率B=0.5931818,直线方程为Y=0.5931818X+33.64924,坐标比例:

×1

Ⅱ:

截距A=80.64387,斜率B=-0.2735675,直线方程为Y=-0.2735675X8+0.64387,坐标比例:

×1

Ⅲ:

截距A=69.0728,斜率B=8.381743E-02,直线方程为Y=8.381743E-02X+69.0728,坐标比例:

×1

五、课程设计总结

经过此次程序设计,使我对许多事情的看法有了改变。

记得上学期学VB的时候,感觉VB很简单,老师布置的作业也很快完成,多余的时间就在偷偷玩游戏。

刚知道自己要做直线拟合这道题时,翻了一下书,感觉很简单,相比选择难题的同学,我心中不免有些得意,心想:

快速做完后,再做一个,说不定能得个优。

刚开始事情就有点不顺,但也没什么大问题,一直到写完所有程序,开始运行的时候,才发觉最糟糕的事情出现了——运行中没有出现拟合直线,其他的问题都好办,可最终显示不出拟合直线就是失败,眼看着交作业的日子越来越近,心中却一点思绪都没有,而此时我又在金工实习,再加上二级考试的临近,我急得像热锅上的蚂蚁,不知怎么办才好。

此时,我才真正体会到编写一个真正有用的程序是多么的困难,那是要花上许多的心血才得来的。

事情终于有了转机,在我弃用图片框后终于发现要显示满足要求的直线首先要进行坐标转换,窗体是以缇为单位,而平面直角坐标系以“1”为单位,二者需要转换。

明白这一点之后,我终于能在窗体上显示出直线了,然而,并非我所期望的直线。

我于是假设直线斜率为2,截距为1,得到一组数据,将它们输入Form2的文本框中,结果发现得到的直线斜率和截距不是2和1,而是0.02和0.01左右小的数字,我晕倒。

检查一便代码后发觉与书上提供的公式相吻合,我没有错,可程序的运行结果却如此荒谬,难道注定我此次设计不合格,明年再来一次吗?

后来,我终于对书本产生怀疑,正是这一怀疑给一切带来了生机,我找出大学物理实验课本,找到相关内容,终于发现程序设计课本错了,一个减号被打印成加号。

找到问题所在后,一切便尽在掌握之中。

六、窗体图示

 

 

 

七.附件

Form1:

PrivateSubCommand1_Click()'显示第二个窗体

Form1.Hide

Form2.Show

Form3.Hide

zxnh=MsgBox("你必须完全输入所选的项目!

"&Chr(10)&Chr(13)&_

"否则程序将会出错!

",48,"直线拟合")

EndSub

PrivateSubCommand2_Click()'结束程序

End

EndSub

'使第二个窗体的文本框按照第一个窗体给出的数据组数显示

PrivateSubOption1_Click()

Form2.Label6.Enabled=False

Form2.Label7.Enabled=False

Form2.Label8.Enabled=False

Form2.Label9.Enabled=False

Form2.Label10.Enabled=False

Forn=6To10

Form2.Text1(n).Enabled=False

Form2.Text1(n).BackColor=&H8000000F

Form2.Text2(n).Enabled=False

Form2.Text2(n).BackColor=&H8000000F

Next

EndSub

PrivateSubOption2_Click()

Form2.Label6.Enabled=True

Form2.Label7.Enabled=False

Form2.Label8.Enabled=False

Form2.Label9.Enabled=False

Form2.Label10.Enabled=False

Form2.Text1(6).Enabled=True

Form2.Text1(6).BackColor=&HFFFFFF

Form2.Text2(6).Enabled=True

Form2.Text2(6).BackColor=&HFFFFFF

Forn=7To10

Form2.Text1(n).Enabled=False

Form2.Text1(n).BackColor=&H8000000F

Form2.Text2(n).Enabled=False

Form2.Text2(n).BackColor=&H8000000F

Next

EndSub

PrivateSubOption3_Click()

Form2.Label6.Enabled=True

Form2.Label7.Enabled=True

Form2.Label8.Enabled=False

Form2.Label9.Enabled=False

Form2.Label10.Enabled=False

Forn=6To7

Form2.Text1(n).Enabled=True

Form2.Text1(n).BackColor=&HFFFFFF

Form2.Text2(n).Enabled=True

Form2.Text2(n).BackColor=&HFFFFFF

Next

Forn=8To10

Form2.Text1(n).Enabled=False

Form2.Text1(n).BackColor=&H8000000F

Form2.Text2(n).Enabled=False

Form2.Text2(n).BackColor=&H8000000F

Next

EndSub

PrivateSubOption4_Click()

Form2.Label6.Enabled=True

Form2.Label7.Enabled=True

Form2.Label8.Enabled=True

Form2.Label9.Enabled=False

Form2.Label10.Enabled=False

Forn=6To8

Form2.Text1(n).Enabled=True

Form2.Text1(n).BackColor=&HFFFFFF

Form2.Text2(n).Enabled=True

Form2.Text2(n).BackColor=&HFFFFFF

Next

Forn=9To10

Form2.Text1(n).Enabled=False

Form2.Text1(n).BackColor=&H8000000F

Form2.Text2(n).Enabled=False

Form2.Text2(n).BackColor=&H8000000F

Next

EndSub

PrivateSubOption5_Click()

Form2.Label6.Enabled=True

Form2.Label7.Enabled=True

Form2.Label8.Enabled=True

Form2.Label9.Enabled=True

Form2.Label10.Enabled=False

Form2.Text1(10).Enabled=False

Form2.Text1(10).BackColor=&H8000000F

Form2.Text2(10).Enabled=False

Form2.Text2(10).BackColor=&H8000000F

Forn=6To9

Form2.Text1(n).Enabled=True

Form2.Text1(n).BackColor=&HFFFFFF

Form2.Text2(n).Enabled=True

Form2.Text2(n).BackColor=&HFFFFFF

Next

EndSub

PrivateSubOption6_Click()

Form2.Label6.Enabled=True

Form2.Label7.Enabled=True

Form2.Label8.Enabled=True

Form2.Label9.Enabled=True

Form2.Label10.Enabled=True

Forn=6To10

Form2.Text1(n).Enabled=True

Form2.Text1(n).BackColor=&HFFFFFF

Form2.Text2(n).Enabled=True

Form2.Text2(n).BackColor=&HFFFFFF

Next

EndSub

 

Form2:

OptionBase1

DimmAsInteger

DimX(10)AsSingle

DimY(10)AsSingle

PrivateSubCommand1_Click()'进入第三个绘图窗体

Form1.Hide

Form2.Hide

Form3.Show

DimAAsSingle'截距

DimBAsSingle'斜率

DimcAsSingle

DimdAsSingle

DimeAsSingle

DimfAsSingle

DimWAsSingle

DimRAsSingle

DimTAsSingle

'讨论点的个数

IfForm2.Text1(5).Enabled=TrueThenm=5

IfForm2.Text1(6).Enabled=TrueThenm=6

IfForm2.Text1(7).Enabled=TrueThenm=7

IfForm2.Text1(8).Enabled=TrueThenm=8

IfForm2.Text1(9).Enabled=TrueThenm=9

IfForm2.Text1(10).Enabled=TrueThenm=10

'对点的x.y坐标进行赋值

Ifm=5Then

Forn=1To5

X(n)=Text1(n).Text

Y(n)=Text2(n).Text

Next

EndIf

Ifm=6Then

Forn=1To6

X(n)=Text1(n).Text

Y(n)=Text2(n).Text

Next

EndIf

Ifm=7Then

Forn=1To7

X(n)=Text1(n).Text

Y(n)=Text2(n).Text

Next

EndIf

Ifm=8Then

Forn=1To8

X(n)=Text1(n).Text

Y(n)=Text2(n).Text

Next

EndIf

Ifm=9Then

Forn=1To9

X(n)=Text1(n).Text

Y(n)=Text2(n).Text

Next

EndIf

Ifm=10Then

Forn=1To10

X(n)=Text1(n).Text

Y(n)=Text2(n).Text

Next

EndIf

Forn=1Tom

c=X(n)+c

d=X(n)*X(n)+d

e=X(n)*Y(n)+e

f=Y(n)+f

Next

A=(e*c-f*d)/(c*c-m*d)'计算直线的截距

B=(c*f-m*e)/(c*c-m*d)'计算直线的斜率

'打印数据方程的位置

Form3.CurrentX=200

Form3.CurrentY=350

Form3.Print"直线斜率(B)="&B

Form3.CurrentX=200

Form3.CurrentY=580

Form3.Print"直线截距(A)="&A

Form3.CurrentX=200

Form3.CurrentY=810

Form3.Print"直线方程为:

";Spc(3);"Y="&B&"X+"&A

'在坐标图上打印出点来

Forn=1Tom

Form3.PSet(360+37*X(n),5400-37*Y(n)),RGB(0,0,0)

Next

W=5400-3700*B-37*A

R=360+(3700-37*A)/B

T=360-37*A/B

'将超出坐标轴的线去掉

IfA>=0Then

Form3.Line(360,5400-37*A)-(4060,W)

IfW<1700ThenForm3.Line(R,1700)-(4060,W),&H8000000F

IfW>5400AndB<0ThenForm3.Line(T,5400)-(4060,W),&H8000000F

Else

Form3.Line(360+(5400-37*A)/B,5400)-(4060,W)

IfW<1700ThenForm3.Line(R,1700)-(4060,W),&H8000000F

IfW>5400AndB<0ThenForm3.Line(T,5400)-(4060,W),&H8000000F

EndIf

EndSub

'返回第一个窗体

PrivateSubCommand2_Click()

Form1.Show

Form2.Hide

Form3.Hide

Forn=1Tom

Text1(n).Text=""

Text2(n).Text=""

Next

EndSub

Form3:

'结束程序

PrivateSubCommand1_Click()

End

EndSub

'重新开始且将FORM2的数据清空

PrivateSubCommand2_Click()

Form1.Show

Form2.Hide

Form3.Hide

Forn=1To10

Form2.Text1(n).Text=""

Form2.Text2(n).Text=""

Next

EndSub

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2