最小二乘法 C++.docx

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

实验二 最小二乘法 【实验内容】1. 掌握最小二乘法的基本思路和解题步骤。2. 并能够利用最小二乘法求m次最小二乘逼近多项式。3. 在课后习题中选择一个利用最小二乘法求一次逼近多项式的题编程计算。交回实验报告与计算结果【实验方法或步骤】1. 理解题意,分析清楚题目用到哪些知识:最小二乘法法,即对所给数据用最小二乘法进行曲线拟和,再对所求的拟合函数进行积分计算。2. 最小二乘法的基本思路已知数据对,求多项式使得为最小,这就是最小二乘问题。3. 最小二乘法算法描述:以线性函数为例,拟合给定数据。步骤1:输入值,及;步骤2:建立正规方程组步骤3:解法方程组,求出系数;步骤4:输出。[实验程序] (自编程序 .cpp文件)#includestdio.h#includemalloc.hdouble f(double a, int b){int i;double k = 1;for (i=0; ib; i++)k *= a;return k;}int main(void){int i, j, n, m;double a[2][2], d[2]={0}, e[2], t; printf(请输入Xi和Yi的个数:\n);scanf(%d, n);double *b = (double *) malloc(sizeof(double)*n);double *c = (double *) malloc(sizeof(double)*n); printf(请输入Xi:\n);for (i=0; in; i++)scanf(%lf, b[i]); printf(请输入Yi:\n);for (j=0; jn; j++)scanf(%lf, c[j]);for (i=0; i2; i++){for (j=0; j2; j++){a[i][j] = 0;for (m=0; mn; m++)a[i][j] += f(b[m],i*2+j);}}a[1][1] = a[1][0];a[1][0] = a[0][1];for (i=0; in; i++){d[0] += c[i]; d[1] += b[i]*c[i];}for(i=0; i2; ++i){t = a[0][i]; a[0][i] = a[1][i]; a[1][i] = t;}t = d[0]; d[0] = d[1]; d[1] = t; a[1][1] -= a[0][1]*a[1][0]/a[0][0];d[1] -= d[0]*a[1][0]/a[0][0];a[1][0] = 0;if(a[1][1] == 0 d[1] !=0)printf(无解。);else{ e[1] = d[1]/a[1][1];e[0] = (d[0] - e[1]*a[0][1])/a[0][0]; printf(方程的系数为:\n); for (j=0; j2; j++)printf(A%d = %10.6lf\n,j+1, e[j]); printf(方程为:\n); printf(P(x) = %10.6lf + %10.6lfx\n, e[0], e[1]);} free(b); free(c);return 0;}【实验结果】

文档评论(0)

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

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

1亿VIP精品文档

相关文档