当前位置:文档之家› VB计算程序课程设计报告

VB计算程序课程设计报告

测试与光电工程学院课程设计任务书测控技术与仪器系100813班学号10081329 姓名吴辉课程名称:用最小二乘法求拟合曲线课题要求:利用VB语言编程实现对给定离散点的拟合(不小于10个)的拟合用最小二乘法求数据的拟合曲线。

要求有良好的输入、输出界面,输出应包含直线方程并图形显示拟合效果。

完成软件的整体设计。

课题进程:1)熟悉VB编程语言、最小二乘法算法分析3天2)编写程序实现以上功能3天3)软件调试、测试2天4)撰写课程设计报告2天指导老师:杨琳瑜目录摘要---------------------------------------------------------------------------------------- 2 第一章最小二乘法 -------------------------------------------------------------------- 21) 理论依据 ----------------------------------------------- 错误!未定义书签。

2) 线性拟合分析 ----------------------------------------- 错误!未定义书签。

3) 非线性拟合分析 --------------------------------------------------------------- 5第二章系统设计 ----------------------------------------------------------------------- 51) 采用的软件及开发平台 ------------------------------------------------------ 52) 项目的总体方案 --------------------------------------------------------------- 53) 项目的详细设计 --------------------------------------------------------------- 6第三章设计实现 ---------------------------------------------------------------------- 101) 主要功能模块的具体实现 -------------------------------------------------- 102) 主要技术问题或难题的解决方法------------------------------------------ 103) 亮点或创新点的实现 -------------------------------------------------------- 11第四章结束语 ------------------------------------------------------------------------- 11 参考文献--------------------------------------------------------------------------------- 12 附录--------------------------------------------------------------------------------------- 13摘要最小二乘法最早是由高斯提出的,这是数据处理的一种很有效的统计方法。

高斯用这种方法解决了天文学方面的问题,特别是确定了某些行星和彗星的天体轨迹。

这类天体的椭圆轨迹由5个参数确定,原则上,只要对它的位置做5次测量就足以确定它的整个轨迹。

但由于存在测量误差,由5次测量所确定的运行轨迹极不可靠,相反,要进行多次测量,用最小二乘法消除测量误差,得到有关轨迹参数的更精确的值。

最小二乘法近似将几十次甚至上百次的观察所产生的高维空间问题降到了椭圆轨迹模型的五维参数空间。

最小二乘法普遍适用于各个科学领域,它在解决实际问题中发挥了重要的作用。

它在生产实践、科学实验及经济活动中均有广泛应用。

比如说,我们引入等效时间的概念,根据Arrhenius函数和指数函数研究水化热化学反应速率随温度的变化,最后采用最小二乘法回归分析试验数据,确定绝热温升和等效时间的关系式。

第一章 最小二乘法1) 理论依据最小二乘的思想就是要使得观测点和估计点的距离的平方和达到最小.这里的“二乘”指的是用平方来度量观测点与估计点的远近(在古汉语中“平方”称为“二乘”),“最小”指的是参数的估计值要保证各个观测点与估计点的距离的平方和达到最小.对于回归模型y=S(x),若(i i y x ,)(i=1,2,3···m )为收集到的观测数据,则应该用来估计,这里是()(,i i x S x )(i=1,2,3···m )的估计值。

它们之间距离的平方和就是21])([i mi y x S -∑。

进而最小二乘估计量就是使22δ=∑=m i i02δ=2])(*[i mi i y x S -∑==21)(])([min 1imix S y x S i -∑=∈ϕ (1)达到最小值的参数。

2) 线性拟合分析给定一组测量数据{(i i y x ,),i=0,1,2,…,m},基于最小二乘原理,求得变量x 和y 之间的函数关系f(x,A),使它最佳地逼近已知数据。

其中A=(n a a a ,...,,10)是一些待定参数。

通常把最小二乘法中的22δ都考虑为加权平方和,即22δ=20))()((i i mi i y x f x -∑=ω其中,0)(>=i x ω是[a,b]上的权函数,它表示反应数据(i i y x ,)在实验中所占数据的比重。

选择参数A 使得加权平方和最小,即求满足0)(,))()((min ))(*)((202>=-=-∑∑==i i i mi i iimi ix y x f x y x f x ωωω (2)的f*(x)。

要使(2)最小,它转换为求多元函数∑∑==-=m i nj i i j j i n x f x a x a a a I 02010])()()[(),,(ϕω ,的极小点),(**1*0n a a a 问题。

由求多远函数极值的必要条件,有∑∑====-=∂∂m i i k nj i i j j i k n k x x f x a x a I00).,,1,0(0)(])()()[(2 ϕϕω 若记∑==mi i k i j i k j x x x 0)()()(),(ϕϕωϕϕ,则∑==≡=mi k i k i i k n k d x x f x f 0),,,1,0()()()(),( ϕωϕ可改写为∑===nj k j k jn k d a 0).,,1,0(),( ϕϕ(3)此方程成为法方程。

它也可以写成矩阵形式⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡====),(),(),(),(),(),(),(),(),(,),,,(,),,(,1011101010001010n n n n n n Tn T n G d d d d a a a a d Ga ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕ ,其中由于0ϕ,1ϕn ϕ 线性无关,故0≠G ,方程组(3)存在唯一解aa kk*= (i=1,2,3···n ),从而得到函数f(x)的最小二乘法解为)()()()(**1*10*0x a x a x a x S n n ϕϕϕ+++=可以证明,这样得到的对于任何多项式形式的)(x S ,都有∑∑==-≤-mi i i i mi iiix f x S x x f x S x 0202)]()([*)()]()(*)[(ωω故)(*x S 确实所求最小二乘解。

摘自《数值分析》3) 非线性拟合分析我们可通过变数变换将其化为线性模型。

利用最小二乘线性拟合确定其系数,再利用逆变换给出原问题的曲线拟合函数。

第二章 系统设计1) 采用的软件及开发平台Microsoft Visual Basic 6.02) 项目的总体方案结束开始输入点坐标绘制点与坐标轴计算线性回归方程并绘制判断坐标点个数无法拟合增加坐标点YESNO3)项目的详细设计command1(生成点坐标):点击后按要求输入坐标点,在text1中输出command2(生成坐标系,绘点):将输入的点在picture1中绘制出坐标轴以及点command3(生成线性方程):计算输入坐标点的线性回归方程,在picture1中绘制线性方程,在picture2中输出线性方程command4 (清除):将text1,picture1,picture2中的内容清除command5(结束):结束程序对象属性名属性值Form1 Caption 最小二乘法Text1TextMultiLine True Alignment 2 Locked TrueCommand1 Caption 生成坐标点Command2 Caption 生成坐标系,绘点Command3 Caption 生成线性方程Command4 Caption 清除Command5 Caption 退出Picture1Picture2 Font 四号Label1 Caption 线性方程为:调试运行截图:第三章 设计实现1) 主要功能模块的具体实现这个VB 程序设计的主要功能模块在于怎样在图片框中画出线性图,然而,我们在这一模块采用了分步考虑,首先考虑的是:假如使用者只输入一个点,那么在图片框中无法生成线性图,顾我们把它设成“单点无法拟合,请重新输入”(当然是先求出对于输入点的线性方程中的a值、b值);其次就是分别在X轴,Y轴上的X值、Y值相等的情况,这样我们就认定为一条垂直于X轴或Y轴的直线,则在系统所确定的区域内画出线性图;最后就剩下没有共同点的额点了,对于这我们直接以图片框的边界作为X轴和Y轴(认为这样方便画图),然后根据算出的a值、b值和系统求出的线性方程,自动生成图像。

2)主要技术问题或难题的解决方法在这个程序设计的过程中,我们遇到了不少的问题,最主要的问题就在怎样画图,因为之前我们还没遇到过这样的问题,鉴于这个问题,我们尽量勤快点地去问问讲师的意见,并且不乏地去图书馆去借阅相关我们课题的书籍,而且我们还有自己的VB书(主要是line 语句),根据这几个方式,我们基本上解决了我们面对的问题。

3)亮点或创新点的实现本次所做的编程中,我们充分运用了所学的知识,比如“If语句”、“For语句”、“MsgBox 语句”和某些控件的有效性属性。

相关主题