版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年4月19日VB课程设计报告文档仅供参考VisualBasic程序设计课程设计报告设计题目直线拟合题目难度四星级姓名蒋龙鑫学号9141010F0309指导教师申屠德忠提交日期4月15号目录TOC\o"1-3"\h\u一、题目描述与功能要求 1二、程序设计 1(一)计算模型或算法实行 1(二)模块设计(窗体界面与代码) 2窗体1的设计…………….3窗体2的设计 7窗体3的设计 12三、算例演示 14四、参考文献 15五、课程设计总结 15一、题目描述与功能要求1题目描述本题目重要是用于将实验中得到的具有线性特征的一组数据经过最小二乘法拟合成直线,求出其直线方程和绘制出该直线的图形。也就是寻找一条直线使这些离散的点尽可能平均的位于该直线的两边,它对于寻找数据的规律有很大的帮助,是一个比较实用的程序。2功能要求:(1)运行程序中,首先显示如下图窗体1的“直线拟合”窗口,从中选择要拟合数据的组数。单击“确定”按钮进入“数据输入”窗口。(2)“数据输入”窗口中有10对文本框,用于输入最多10组实验数据。根据在“直线拟合”窗口的选择不同,这10对文本框只有指定数目的文本框可用。输入指定的数据,然后单击“确定”按钮。如果数据未完全输入,则显示错误提示的消息框。(3)如果数据输入正确,在“数据输入”窗口中单击“确定”按钮之后,程序进入“直线参数与图形”窗口,在此窗口中,程序根据输入的数据自动计算拟合直线方程的参数,并将系数和方程显示在窗口顶部。在窗口的绘图区绘制直线图形。二、程序设计(一)计算模型或算法实行假设实验中得到n个点,P1(X1,Y1),P2(X2,Y2),…,Pn(Xn,Yn),用i表示第i个点.由于各种误差的存在,这些数据点不可能完全在一条直线上。如果我们能找到一条直线,使这n个点到该直线的距离之平方和最小,则该直线就是用最小二乘法拟合出来的直线。设拟合的直线方程为F(X)=Y=bX+a,由于拟合出来的直线斜率是固定的,我们能够用每一个数据点与直线在Y方向上的“残差”来定义,即残差ΔYi=F(Xi)-Yi,可得:Σ(ΔYi)^2=Σ(F(Xi)-Yi)^2=Σ(bXi+a-Yi)^2根据最小二乘法原理,Σ(bXi+a-Yi)^2取极小值时,即为残差最小,这时确定的直线即为拟合的直线。上式是一个二元函数求极值的问题,可分别对自变量a与b求偏导数,可易得:na+bΣXi=ΣYiaΣXi+bΣ(Xi)^2=Σ(XiYi)从而得到公式:由上公式可知,我们可用n个点的坐标确定直线方程的系数a与b,得到方程并将方程拟合出来.本题目的程序设计由三个窗体组成。在Form1中,有1个框架控件、1个标签控件、2个命令按钮和1个由6个单选按钮组成的控件数组。单选按钮控件数组用来选择要输入的数据组数,当选择好后,单击“确定”按钮,就能够进入下一个窗体。单击“取消”按钮则退出程序Form1的代码见附件。 在Form2中有2个命令按钮、20个文本框(每10个组成一个控件数组)、12个标签控件和许多直线组成。在文本框中输入实验数据后,点击“确定”按钮,若数据没有全部输入,则出现消息框,提醒没有完全输入。若已经完全输入,则显示Form3,隐藏Form2。与此同时,对实验数据计算,得出拟合直线的截距和斜率,并在Form3的标签控件1中体现;根据所得的斜率和截距得到拟合直线方程,并在Form3的标签2中体现;还能够在Form3中绘出拟合直线和每个实验点(用绿色),根据实验数据调整坐标系统,画出拟合直线。Form2的代码见附件。(二)模块设计(窗体界面与代码)本题目的程序设计由3个模块组成,其中窗体模块3个。序号模块名称模块类型模块功能1Form1窗体模块选择要输入的数据组数,当选择好后,单击“确定”按钮,就能够进入下一个窗体;单击“取消”按钮则退出程序2Form2窗体模块输入实验数据后,对实验数据计算,得出拟合直线的截距和斜率,根据所得的斜率和截距得到拟合直线方程。 3Form3窗体模块根据实验数据调整坐标系统,画出拟合直线。窗体1的设计表1窗体1中控件列表序号控件名称控件类型LeftTopWidthHeightCaption1Label1标签控件14401202055375直线拟合程序2Frame1框架控件48060038551455请选择数据组数3Option1单选框控件3603609752555组4Option2单选框控件3607209752556组5Option3单选框控件36010809752557组6Option4单选框控件25203609752558组7Option5单选框控件25207209752559组8Option6单选框控件2520108097525510组9Command1命令按钮控件72022801575495确定10Command2命令按钮控件252022801575495退出表2窗体1中事件过程列表序号事件过程功能1Option1-click()选择数据组数为5组2Option2-click()选择数据组数为6组3Option3-click()选择数据组数为7组4Option4-click()选择数据组数为8组5Option5-click()选择数据组数为9组6Option6-click()选择数据组数为10组7Command1-click()进入第二个窗体坐标轴的输入8Command2-click()退出拟合值线的数据输入表3窗体1中通用过程与函数列表序号过程与函数输入参数输出参数功能1MsgBox()以文本向用户显示运行过程中的信息,让用户单击按钮作选择2Chr()10换行符使消息内容在中间某处换行3Chr()13回车符窗体1的代码Form1PrivateSubCommand1_Click()'显示第二个窗体Form1.HideForm2.ShowForm3.Hidezxnh=MsgBox("你必须完全输入所选的项目!"&Chr(10)&Chr(13)&_"否则程序将会出错!",48,"直线拟合")EndSubPrivateSubCommand2_Click()'结束程序EndEndSub'使第二个窗体的文本框按照第一个窗体给出的数据组数显示PrivateSubOption1_Click()Form2.Label6.Enabled=FalseForm2.Label7.Enabled=FalseForm2.Label8.Enabled=FalseForm2.Label9.Enabled=FalseForm2.Label10.Enabled=FalseForn=6To10Form2.Text1(n).Enabled=FalseForm2.Text1(n).BackColor=&H8000000FForm2.Text2(n).Enabled=FalseForm2.Text2(n).BackColor=&H8000000FNextEndSubPrivateSubOption2_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=&HFFFFFFForn=7To10Form2.Text1(n).Enabled=FalseForm2.Text1(n).BackColor=&H8000000FForm2.Text2(n).Enabled=FalseForm2.Text2(n).BackColor=&H8000000FNextEndSubPrivateSubOption3_Click()Form2.Label6.Enabled=TrueForm2.Label7.Enabled=TrueForm2.Label8.Enabled=FalseForm2.Label9.Enabled=FalseForm2.Label10.Enabled=FalseForn=6To7Form2.Text1(n).Enabled=TrueForm2.Text1(n).BackColor=&HFFFFFFForm2.Text2(n).Enabled=TrueForm2.Text2(n).BackColor=&HFFFFFFNextForn=8To10Form2.Text1(n).Enabled=False·Form2.Text1(n).BackColor=&H8000000FForm2.Text2(n).Enabled=FalseForm2.Text2(n).BackColor=&H8000000FNextEndSubPrivateSubOption4_Click()Form2.Label6.Enabled=TrueForm2.Label7.Enabled=TrueForm2.Label8.Enabled=TrueForm2.Label9.Enabled=FalseForm2.Label10.Enabled=FalseForn=6To8Form2.Text1(n).Enabled=TrueForm2.Text1(n).BackColor=&HFFFFFFForm2.Text2(n).Enabled=TrueForm2.Text2(n).BackColor=&HFFFFFFNextForn=9To10Form2.Text1(n).Enabled=FalseForm2.Text1(n).BackColor=&H8000000FForm2.Text2(n).Enabled=FalseForm2.Text2(n).BackColor=&H8000000FNextEndSubPrivateSubOption5_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=&H8000000FForn=6To9Form2.Text1(n).Enabled=TrueForm2.Text1(n).BackColor=&HFFFFFFForm2.Text2(n).Enabled=TrueForm2.Text2(n).BackColor=&HFFFFFFNextEndSubPrivateSubOption6_Click()Form2.Label6.Enabled=TrueForm2.Label7.Enabled=TrueForm2.Label8.Enabled=TrueForm2.Label9.Enabled=TrueForm2.Label10.Enabled=TrueForn=6To10Form2.Text1(n).Enabled=TrueForm2.Text1(n).BackColor=&HFFFFFFForm2.Text2(n).Enabled=TrueForm2.Text2(n).BackColor=&HFFFFFFNextEndSub窗体2的设计表4窗体2中控件列标序号控件名称控件类型LeftTopWidthHeightCaption1Label1标签控件480880495255第1点2Label2标签控件4801240495255第2点3Label3标签控件4801600495255第3点4Label4标签控件4801960495255第4点5Label5标签控件4802320495255第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)文本框控件1440156073527016Text1(4)文本框控件1440192073527017Text1(5)文本框控件1440228073527018Text1(6)文本框控件1440264073527019Text1(7)文本框控件1440300073527020Text1(8)文本框控件1440336073527021Text1(9)文本框控件1440372073527022Text1(10)文本框控件1440408073527023Text2(1)文本框控件264084073527024Text2(2)文本框控件2640120073527025Text2(3)文本框控件2640156073527026Text2(4)文本框控件2640192073527027Text2(5)文本框控件2640228073527028Text2(6)文本框控件2640264073527029Text2(7)文本框控件2640300073527030Text2(8)文本框控件2640336073527031Text2(9)文本框控件2640372073527032Text2(10)文本框控件2640408073527033Command1命令按钮控件48046801335495确定34Command2命令按钮控件204046801335495返回X1Y1X2Y2BorderStyleBorderWidth35Line1直线控件24024036002401-solid136Line2直线控件24024024044401-solid137Line3直线控件3600240360044401-solid138Line4直线控件1200240120044401-solid139Line5直线控件2400240240044401-solid140Line6直线控件24072036007201-solid141Line7直线控件2404440360044401-solid142Line8直线控件24024012007201-solid1表5窗体2中事件过程列表序号事件过程功能1Command1-click()进入绘图窗体,拟合成直线2Command2-click()退出拟合直线的数据输入表6窗体2中通用过程与函数列表序号过程与函数输入参数输出参数功能1Spc()33个空格组成的字符串返回number个空格组成的字符串窗体模块代码2的Form2:OptionBase1DimmAsIntegerDimX(10)AsSingleDimY(10)AsSinglePrivateSubCommand1_Click()'进入第三个绘图窗体Form1.HideForm2.HideForm3.ShowDimAAsSingle'截距DimBAsSingle'斜率DimcAsSingleDimdAsSingleDimeAsSingleDimfAsSingleDimWAsSingleDimRAsSingleDimTAsSingle'讨论点的个数IfForm2.Text1(5).Enabled=TrueThenm=5IfForm2.Text1(6).Enabled=TrueThenm=6IfForm2.Text1(7).Enabled=TrueThenm=7IfForm2.Text1(8).Enabled=TrueThenm=8IfForm2.Text1(9).Enabled=TrueThenm=9IfForm2.Text1(10).Enabled=TrueThenm=10'对点的x.y坐标进行赋值Ifm=5ThenForn=1To5X(n)=Text1(n).TextY(n)=Text2(n).TextNextEndIfIfm=6ThenForn=1To6X(n)=Text1(n).TextY(n)=Text2(n).TextNextEndIfIfm=7ThenForn=1To7X(n)=Text1(n).TextY(n)=Text2(n).TextNextEndIfIfm=8ThenForn=1To8X(n)=Text1(n).TextY(n)=Text2(n).TextNextEndIfIfm=9ThenForn=1To9X(n)=Text1(n).TextY(n)=Text2(n).TextNextEndIfIfm=10ThenForn=1To10X(n)=Text1(n).TextY(n)=Text2(n).TextNextEndIfForn=1Tomc=X(n)+cd=X(n)*X(n)+de=X(n)*Y(n)+ef=Y(n)+fNextA=f/m-(m*e-c*f)*c/m/(m*d-c*c)'计算直线的截距B=(c*f-m*e)/(c*c-m*d)'计算直线的斜率'打印数据方程的位置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'在坐标图上打印出点来Forn=1TomForm3.PSet(360+37*X(n),5400-37*Y(n)),RGB(0,0,0)NextW=5400-3700*B-37*AR=360+(3700-37*A)/BT=360-37*A/B'将超出坐标轴的线去掉IfA>=0ThenForm3.Line(360,5400-37*A)-(4060,W)IfW<1700ThenForm3.Line(R,1700)-(4060,W),&H8000000FIfW>5400AndB<0ThenForm3.Line(T,5400)-(4060,W),&H8000000FElseForm3.Line(360+(5400-37*A)/B,5400)-(4060,W)IfW<1700ThenForm3.Line(R,1700)-(4060,W),&H8000000FIfW>5400AndB<0ThenForm3.Line(T,5400)-(4060,W),&H8000000FEndIfEndSub'返回第一个窗体PrivateSubCommand2_Click()Form1.ShowForm2.HideForm3.HideForn=1TomText1(n).Text=""Text2(n).Text=""NextEndSub窗体3的设计表7窗体3中控件列表序号控件名称控件类型LeftTopWidthHeightCaption1Label1标签控件4801201455255直线参数(Y=BX+A2Label2标签控件168013201095255直线(Y-X)图3Label3标签控件33605160975135坐标比例:10:14Label4标签控件17019201801351005Label5标签控件2203480135135506Label6标签控件240540013513507Label7标签控件21605445135135508Label8标签控件396054451801351009Command1命令按钮控件60057601455495关闭10Command2命令按钮控件240057601455495返回X1Y1X2Y2BorderWidthBorderStyle11Line1直线控件48019512019511-Solid12Line2直线控件1920195456019511-Solid13Line3直线控件120195120108011-Solid14Line4直线控件45601954560108011-Solid15Line5直线控件12010804560108011-Solid16Line6直线控件12012004560120011-Solid17Line7直线控件1201200120564011-Solid18Line8直线控件3601320360540011-Solid19Line9直线控件3601320240156011-Solid20Line10直线控件3601320480156011-Solid21Line11直线控件36054004440540011-Solid22Line12直线控件456012004560564011-Solid23Line13直线控件120056404560564011-Solid24Line14直线控件444054004200528011-Solid25Line15直线控件444054004200552011-Solid226Line16直线控件3601700420170011-Solid27Line17直线控件3602070420207011-Solid28Line18直线控件3602440420244011-Solid29Line19直线控件3602810420281011-Solid30Line20直线控件3603180420318011-Solid31Line21直线控件3603550420355011-Solid32Line22直线控件3603920420392011-Solid33Line23直线控件3604290420429011-Solid34Line24直线控件3604660420466011-Solid35Line25直线控件3605030420503011-Solid36Line26直线控件7305340730540011-Solid37Line27直线控件110053401100540011-Solid38Line28直线控件147053401470540011-Solid39Line29直线控件184053401840540011-Solid40Line30直线控件221053402210540011-Solid41Line31直线控件258053402580540011-Solid42Line32直线控件295053402950540011-Solid43Line33直线控件332053403320540011-Solid44Line34直线控件369053403690540011-Solid45Line35直线控件406053404060540011-Solid表8窗体3中事件过程列表序号事件过程功能1Command1-click()关闭程序,退出拟合直线2Command2-click()退出拟合直线的绘制过程,重新输入数据窗体模块代码3的Form3:PrivateSubCommand1_Click()'结束程序EndEndSubPrivateSubCommand2_Click()'重新开始且将FORM2的数据清空Form1.ShowForm2.HideForm3.HideForn=1To10Form2.Text1(n).Text=""Form2.Text2(n).Text=""NextEndSub三、算例演示输入输出数据 当选择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,直线方程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法律职业入门法务专员面试题及参考答案
- 2025山东济南市济阳区城市建设投资集团有限公司社会招聘2人备考笔试题库及答案解析
- 2025年衢州江山市教育局公开招聘体育教练员1人模拟笔试试题及答案解析
- 2025云南中医药大学招聘第三批科研助理岗位工作人员(事业编制外)11人备考笔试题库及答案解析
- 2025城发环保能源(濮阳)有限公司招聘1人(河南)参考笔试题库及答案解析
- 幼师招聘面试题及儿童教育方法含答案
- 2025浙江温州桐君堂药材有限公司招聘西药专业人员1人备考考试题库及答案解析
- 2026年中国文具市场调研报告
- 产品经理面试题库版含答案
- 物流规划师职位的常见问题及答案解析
- 眩晕的中医治疗
- 2026共青团中央所属单位高校毕业生招聘66人参考笔试试题及答案解析
- 2026届吉林省九校高三11月联考化学试题及答案
- 2025福建宁德霞浦县福宁水务有限公司招聘33人考试笔试模拟试题及答案解析
- 2025深圳辅警考试真题
- 微商招商培训课件
- 少数民族风俗及宗教活动课件
- 爱天使圈-降低针刺伤发生率
- 矿山安全防护工(高级)职业技能等级认定考试题库(新版500题)
- 办公室资产清单模板
- DL∕T 1286-2021 火电厂烟气脱硝催化剂检测技术规范
评论
0/150
提交评论