- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
非线性回归分析(Newton迭代法)
软件算法说明书
姓 名: 郑馨
学 号: 2013014904
班 级:信息与计算科学131班
目录
1 引言 1
1.1 编写目的 1
1.2 范围 1
1.3 定义 2
1.4 参考资料 2
2 总体设计 2
2.1 需求规定 2
2.2 运行环境 3
2.3 基本设计概念和处理流程 2
2.4 一般约束 3
3 功能模块设计 3
3.1 算法实现 3
3.2 理论依据 19
﹒1 引言
在数学中,变量之间存在着各种各样的关系,线性关系或者非线性关系。线性关系在我们看来还是比较简单的,但是非线性关系却也是很常见的。为了解决非线性的关系,前辈们钻研出了一套特定的方法供我们学习和使用。其中就包括我们常会遇到非线性回归模型。在非线性回归模型中,一种类型是可以通过变量变换化为线性模型,然后按照线性模型加以解决,这样问题就简化多了;另一种类型的非线性模型是用任何变量变换办法都不能或不方便直接化为线性模型,此时我们必须要用另外一种方法进行求解,那就是参数估计的方法,此时我们需要求得参数的估计值。那么如何求得参数的估计值呢,接下来就给大家讲一下求参数估计值的方法。
1.1 编写目的
在实际应用中,有些模型是可以直接或者间接地转化成线性模型,从而简化我们的求解过程。但是有些非线性模型用任何变量变换都不能化为线性模型求得参数的估计值。所以,我们只能使用其他的方法进行求解。这也就是我们这个项目的目的,使用最小二乘法进行拟合,逐步逼近,然后求得最后结果。
1.2 范围
说明:
这是一个非线性回归分析系统。
对数据样本按照所给模型函数进行非线性拟合,以使达到拟合最佳效果。给定模型函数,用户进行相关的操作,使得系统能够进行相关拟合。但是系统不能自动判断样本数据的标准形式。
1.3 定义
最小二乘法---------通过最小化误差的平方和寻找数据的最佳函数匹配。
非线性回归分析系统----回归参数不是线性的回归模型。
1.4 参考资料
1. 《多元统计分析》 袁志发 周静芋 主编
2. 《高斯—牛顿法在非线性回归分析中的应用》 韩兆洲
3. 《VB程序设计》
2 总体设计
2.1 需求规定
本软件使用Visual Basic编写。功能是:完成对样本数据的非线性拟合。所用方法主要是最小二乘法,即通过求偏导及方程组解除系数以使最小化误差的平方和,寻找数据的最佳函数匹配。软件界面具有较好的可视化,方便用户使用。
2.2 运行环境
无特殊要求
2.3 基本设计概念和处理流程
a.输入:
根据输入的自变量和随机变量的多组数据,通过输入:函数模板、参数的个数以及参数的初值,能通过非线性回归分析进行拟合,计算出各参数的值,从而计算出随机变量关于自变量的回归方程,使得拟合效果最好。
b.输出:
1)能做出自变量和随机变量的散点图和拟合以后的回归方程的函数图,并可以将图像保存为.bmp格式。
2)程序如果在运行时出现错误,则会自动关闭运行窗口。
2.4 一般约束
要修改程序或对其进行维护必须使用VB6.0及以上版本进行,运行时只需双击exe文件即可。另外函数非线性拟合的好坏和给定的函数模型有很大关系,要想得到良好的拟合效果,就必须保证给定的函数模型尽可能接近原本拟合后的函数,所以,建议用户在处理样本前进行大概估计。
3 功能模块设计
3.1 算法实现
由于软件算法较为复杂,逻辑过程详见设计流程图,现在就将软件逻辑过程中的三个矩阵的算法实现在此做以介绍。
定义全局变量
******************************全局变量******************************
Public X#(), Y#(), g#(), r#(), h#(), e#, n%, m%
定义的函数
解线性方程分组
******************************解线性方程组的函数******************************
Public Function LEGauss(m As Integer, dblA() As Double, dblB() As Double)
***********************************局部变量************************************
Dim i As Integer, j As Integer, k As Integer
Dim nIs As In
文档评论(0)