数理统计课程实验报告.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数理统计课程实验报告,数理统计课程英文视频,数理统计课程设计,数理统计精品课程,概率论与数理统计课程,数理统计课程论文,课程设计实验报告,c课程设计实验报告,eda课程设计实验报告,java课程设计实验报告

高等数理统计课程实验 【摘要】 本实验报告描述了用最小二成估计算法解决实际问题中参数估计的过程。包括引言、实验原理、实验过程、实验结果及分析,同时给出了在实验过程中所遇到的问题描述,以及问题是否解决及待改进的地方。 本次实验所采用的编程工具为Visual studio 2008,编程语言采用C++。 1 引言: 实验目的:应用参数估计方法解决实际问题。 实验意义:通过本次实验,更加熟烂的掌握最小二成估计算法。使用实验中给出的数据选用适当的函数(如适当阶次的多项式、高斯势函数),用LS估计方法,拟合给定数据,给出拟合强度系数以及噪声方差(设为独立高斯噪声)。 2 原理:y = a+bx + (,其中y、x 可测, (是均值为0的随机变量,a、 b为未知参数。通过 n次实验,得到测量数据yi和xi, i = 1, 2, …, n, 确定未知参数 a 、 b。使 的估计称为最小二乘(LS)估计,即残差平方和最小的估计。 基本模型 : 写为向量形式为: 写为矩阵形式为: 其中: 拟合强度系数推导公式为:^β=(X’X)X’Y 所以拟合后的函数值为: ^Y=X^β 残差平方和计算公式如下: 噪声方差计算公式:Yawp=J(a)/(p-n) 其中p为矩阵Y的行数,n为所使用的阶数。 3 实验结果及分析: 构造X为: X= Y= 共167个数据 输入不同的N进行实验,观察不同的N值所对应的残差平方和及噪声方差: 下图中黑线为原始数据所对应的函数图,红色为N阶拟合函数图。 以下列举几个比较具有代表性的N值所对应的拟合函数及对应的残差平方和与噪声方差。 (1)取N=3 实验结果如下: (2)取N=9 (3)取N=13 (4)取N=17 (5)取N=40 观察以上N阶拟合函数,发现当N=17时拟合效果最好,即在N=17时残差平方和最小。 4 小结 试验中遇到的一些问题: (1)在写求矩阵的逆矩阵的算法时,要先判断该矩阵的行列式是否为0,由于逻辑错误,导致程序进入死循环。 解决方法:不在程序中判断矩阵的行列式是否为0,改为在实验过程中保证所涉及的矩阵行列式都不为0,再进行运算。 (2)描述一个矩阵时要用一个数组及x,y来描述,但是这样曾加了结构复杂度,导致整体结构复杂。 解决方法:用一个结构体封装这个矩阵,结构体里包含存放数据的数组及表示行数列数的x,y。 (3)开始把数据类型定义为DOUBLE,但是在计算N很大时有可能发出溢出。 解决方法:使用第三方高精度浮点数运算库函数。 但是由于能力有限,该错误还是存在,例如上面当N=17时,残差平方和很小,但拟合函数在后期却显示出与原函数偏差很大,估计就是由这一未解决的问题引起的。 5 参考文献 [1]孙荣恒.应用数理统计[M]. 北京:科学出版社夏普(英)清华大学出版社tatic int MatrixAlgo::Transpose(MatrixT matrix) { int nxTmp; //转置后的x int nyTmp; //转置后的y nxTmp = matrix.ny; nyTmp = matrix.nx; T *tmp_matrix_arry = new T[nxTmp*nyTmp]; if(tmp_matrix_arry == NULL) return 0; for(int x = 0; x matrix.nx; ++x) { for(int y = 0; y matrix.ny; ++y) { tmp_matrix_arry[y*nyTmp + x] = matrix.matrix_arry[x*matrix.ny + y]; } } T* delete_tmp = matrix.matrix_arry; matrix.matrix_arry = tmp_matrix_arry; matrix.nx = nxTmp; matrix.ny = nyTmp; delete[] delete_tmp; return 1; } (2)求矩阵逆矩阵的算法: static int MatrixAlgo::Inverse(MatrixT matrix) { if(matrix.nx != matrix.ny) return 0; int n = matrix.nx; int *is, *js, i, j, k, l, u, v; T d, p; is = new int[n]; js = new int[n];

文档评论(0)

tianma2015 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档