南昌航空大学
一模块采用了分步考虑,首先考虑的是:假如使用者只输入一个点,那么在图片框中无法生成线性图,顾我们把它设成“单点无法拟合,请重新输入”(当然是先求出对于输入点的线性方程中的a值、b值);其次就是分别在X轴,Y轴上的X值、Y值相等的情况,这样我们就认定为一条垂直于X轴或Y轴的直线,则在系统所确定的区域内画出线性图;最后就剩下没有共同点的额点了,对于这我们直接以图片框的边界作为X轴和Y轴(认为这样方便画图),然后根据算出的a值、b值和系统求出的线性方程,自动生成图像。
2) 主要技术问题或难题的解决方法
在这个程序设计的过程中,我们遇到了不少的问题,最主要的问题就在怎样画图,因为之前我们还没遇到过这样的问题,鉴于这个问题,我们尽量勤快点地去问问讲师的意见,并且不乏地去图书馆去借阅相关我们课题的书籍,而且我们还有自己的VB书(主要是line语句),根据这几个方式,我们基本上解决了我们面对的问题。
3) 亮点或创新点的实现
本次所做的编程中,我们充分运用了所学的知识,比如“If语句”、“For语句”、“MsgBox语句”和某些控件的有效性属性。这些都是通过反复运行测试做出的结果,因为在这其中我们的不足之处还是有很多很多的,例如:在还没输入要画线的点之前,就可以画线了,那么在那些控件之间就产生了矛盾(没点就能画出线性图?),所以我们使用了控件的有效性这一属性等等。
第 11 页 共 17 页
南昌航空大学
第四章 结束语
最小二乘法是指使因变量估计值与实测值间的相对误差平方和为最小。在研究两个变量之间的关系时,我们可以用回归分析的方法进行分析。当确定了描述两个变量之间的回归模型后,就可以使用最小二乘法估计模型中的参数,进而建立数学模型,然后通过MATLAB求解模型。
通过本文实例模型(非多项式形式y?aebx )的求解,我们学会了怎样从给定的二维
数据出发,寻找一个简单合理的函数来拟合给定的一组看上去杂乱无章的数据。如何巧妙地运用最小二乘法解决数据拟合问题,这不仅对我们在今后的学习有一定的帮助,而且在生产实践、科学实验中也起到了一定的作用。。
课题设计时VB代码编写复杂、冗长,稍一不慎就会出错,我们调试了好多次,失败了好多次,而自己仔细想想,归根究底还是在于自己心太浮躁,没有耐心。VB的编程是一项不易的工作,没有一颗平静的心是完成不了的。我想,将来做许多事,也需要保持这么一种平和的心态,它是一种个人综合素质,是我们制胜的关键。
在课题设计的过程中,VB代码的编写——即设计的主过程无疑是一个难点,这部分内容虽然难,但在我们能力范围之内。而最大的难点在于,项目设计中需要根据用户提供的坐标点来生成一次模拟曲线,刚遇到这个问题时,根本无法下手,最后还是到图书馆、网上查阅了相关资料才解决了这一难题。从中我领悟到,亲自行动才是解决问题最好的方法,实践就是一切。不管困难有多大,没有切实的行动时不行的。而这前提必然是自己要有解决问题的决心与坚忍不拔的毅力。
此次项目对我来说是困难的,但无论怎样,我还是完成了,这说明一点,其实没有克服不了的困难。无论身处于怎样的境地,我们都要勇于面对,并想办法解决,因为自己根本无法逃避。
第 12 页 共 17 页
南昌航空大学
参考文献
参考内容为:
①《Visual Basic 程序设计教程》第十章中10.1 图形操作 ②《Visual basic 6》学习指南 张志军著 第二章2.3创建用户界面 ③《数值分析》科学出版社
附录
程序代码如下:
Dim x() As Single, y() As Single, i As Integer, n As Integer, m As Integer Dim sumx As Double, sumy As Double, xaver As Double, yaver As Double Dim xy As Double, x2 As Double Dim a As Double, b As Double
Dim xmax As Double, xmin As Double Dim ymax As Double, ymin As Double Private Sub Command1_Click()
第 13 页 共 17 页
南昌航空大学
Randomize
n = InputBox(\请输入坐标点个数:\ If n = 0 Then
MsgBox \请输入坐标点个数\ Command1.Enabled = True ElseIf n = 1 Then
MsgBox \单点无法拟合,请重新输入\ Exit Sub
Command1.Enabled = False Command2.Enabled = False Command3.Enabled = False Command4.Enabled = True Else
Command1.Enabled = False Command2.Enabled = True Command4.Enabled = True End If
ReDim x(n) ReDim y(n) For i = 1 To n
x(i) = InputBox(\请输入第\个点的横坐标\ sumx = sumx + x(i)
Text1 = Text1 & \第\个点:(\
y(i) = InputBox(\请输入第\个点的纵坐标\ sumy = sumy + y(i)
Text1 = Text1 & \,\)\ Next i End Sub
Private Sub Command2_Click() Picture1.Cls
Picture1.DrawWidth = 1 Command2.Enabled = False Command3.Enabled = True Command4.Enabled = True xmax = x(1): xmin = x(1) ymax = y(1): ymin = y(1) For i = 2 To n
If xmax < x(i) Then xmax = x(i) End If
If xmin > x(i) Then xmin = x(i) End If Next i
For i = 2 To n
第 14 页 共 17 页
南昌航空大学
If ymax < y(i) Then ymax = y(i) End If
If ymin > y(i) Then ymin = y(i) End If Next i
If xmax = xmin Then
Picture1.Scale (xmin * 0.5, ymax + 0.2 * (ymax - ymin))-(xmin * 1.5, ymin - 0.2 * (ymax - ymin)) zbz xmin * 0.5, ymax + 0.2 * (ymax - ymin), xmin * 1.5, ymin - 0.2 * (ymax - ymin) ElseIf ymax = ymin Then
Picture1.Scale (xmin - 0.2 * (xmax - xmin), ymax * 1.5)-(xmax + 0.2 * (xmax - xmin), ymin * 0.5) zbz xmin - 0.2 * (xmax - xmin), ymax * 1.5, xmax + 0.2 * (xmax - xmin), ymin * 0.5 Else
Picture1.Scale (xmin - 0.2 * (xmax - xmin), ymax + 0.2 * (ymax - ymin))-(xmax + 0.2 * (xmax - xmin), ymin - 0.2 * (ymax - ymin))
zbz xmin - 0.2 * (xmax - xmin), ymax + 0.2 * (ymax - ymin), xmax + 0.2 * (xmax - xmin), ymin - 0.2 * (ymax - ymin) End If
Picture1.DrawWidth = 5 For i = 1 To n
Picture1.PSet (x(i), y(i)), vbRed Next i End Sub
Private Sub Command3_Click() Command3.Enabled = False Command4.Enabled = True Picture2.Cls xaver = sumx / n yaver = sumy / n For i = 1 To n
xy = xy + x(i) * y(i) x2 = x2 + x(i) * x(i) Next i
b = (xy - n * xaver * yaver) / (x2 - n * xaver * xaver) a = yaver - b * xaver a = Left(a, 6) b = Left(b, 6)
Picture2.Print \ If xmax = xmin Then
Picture1.Scale (xmin * 0.5, ymax + 0.2 * (ymax - ymin))-(xmin * 1.5, ymin - 0.2 * (ymax - ymin)) zbz xmin * 0.5, ymax + 0.2 * (ymax - ymin), xmin * 1.5, ymin - 0.2 * (ymax - ymin)
Picture1.Line (xmax, ymax + 0.2 * (ymax - ymin))-(xmax, ymin - 0.2 * (ymax - ymin)), vbBlue ElseIf ymax = ymin Then
Picture1.Scale (xmin - 0.2 * (xmax - xmin), ymax * 1.5)-(xmax + 0.2 * (xmax - xmin), ymin * 0.5) zbz xmin - 0.2 * (xmax - xmin), ymax * 1.5, xmax + 0.2 * (xmax - xmin), ymin * 0.5
第 15 页 共 17 页