网站大量收购独家精品文档,联系QQ:2885784924

最小二乘法多项式拟合实验报告..docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最小二乘法多项式拟合实验报告.

连续系统仿真实验报告实验数据拟合建模姓名:专业:学号:时间:2013年5月1日实验单元二实验数据拟合建模一、实验目的1、用C语言实现最小二乘的多项式拟合和LU分解法;2、熟练掌握最小二乘拟合和LU分解法的基本原理。3、体会用计算机编程解决计算问题的方法。二、需求说明(一)、需求阐述本次实验是要求根据已知的自变量和函数值,通过多项式拟合来分别计算2、3、4阶拟合多项式,并根据拟合结果分别计算出待求点的函数值。其中解拟合系数方程组时采用LU分解的方法计算拟合多项式的系数。(二)、实验公式m次拟合函数公式为:计算系数的方程组为: 其中, 所以,在编程计算时,先计算出方程组,再用LU分解法计算求出的值,即可得到拟合多项式。LU分解法的公式为:=其中L矩阵和U矩阵的计算公式如下:第一步,当k=1,有:第二步,当k=2,3,,n-1时,有:最后求:三、设计说明(一)、数据结构程序采用一维数组的形式来读取文件中给出的已知点处的值和要计算的未知点处的自变量值,最终的拟合计算结果也是采用一维数组的形式输出到文件中。拟合多项式的系数a和拟合系数方程组的参数t都是采用一维数组来存储的,而拟合系数方程组中的参数s和L、U矩阵都是用二维数组来表示的。由于要分别计算2、3、4阶拟合结果,所以数组的规模取为5,矩阵的规模取为5*5.(二)、算法设计及效率分析在进行LU分解函数中,在计算L矩阵和U矩阵时,因为当k=2,3,,n-1时,计算和的循环条件不允许k=1时进入,而正好k=1时,计算和不需要和,因而对k=1和k=2,3,,n-1,就可以和在一起计算,这样就减少了程序的长度。而在分别计算2、3、4阶拟合系数方程组的参数时,没有很好的利用前一阶计算的,而每次都要重新计算;而且矩阵是一个堆成矩阵,没有好好利用对称矩阵的特性,导致了重复计算,增加了计算量,降低了程序的效率。而造成这一结果的原因是自己为了编程的简单而忽视了计算量,在以后的编程时要注意改变这一习惯。(三)、程序结构程序主要步骤的流程图如下:以上流程图对应的源程序中的函数分别如下://计算拟合系数方程组中的参数svoid computers(double s[p][p],double x1[],int m) //计算拟合系数方程组中的参数tvoid computert(double t[],double x1[],double y1[],int m) //对拟合系数方程组中的参数s组成的矩阵进行LU分解void LV(double L[p][p],double V[p][p],double s[p][p],int m) //计算拟合多项式的系数void computera(double L[p][p],double V[p][p],double t[],double x[],int m) //由得到的的拟合多项式计算待求点处的函数值void computerty2(double a[],double x2[],double y2[],int m) //保存得到的拟合多项式和计算处的参数void save(double a[],int m,double y2[]) 四、编码实现#include iostream#include fstream#include string#include math.h#define p 5//拟合方程的阶次+1#define q 5 //已知点的数目,也是带计算点的数目using namespace std;ofstream outDatay(G:\\连续系统仿真\\拟合实验\\outy.txt); //用于保存计算结果int main(){void computers(double s[p][p],double x1[],int m); //计算拟合方程组的系数svoid computert(double t[],double x1[],double y1[],int m); //计算拟合方程组的系数tvoid LV(double L[p][p],double V[p][p],double s[p][p],int m); //LU分解void computera(double L[p][p],double V[p][p],double t[],double x[],int m); //计算拟合多项式的系数void computerty2(double a[],double x2[],double y2[],int m);void save(double a[],int m,double y2[]);ifstream inDatax,ou

文档评论(0)

sdgr + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档