《最小二乘拟合的C++实现(共5页).docx》由会员分享,可在线阅读,更多相关《最小二乘拟合的C++实现(共5页).docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验名称:最小二乘拟合学 院:_数学学院_ 班 级 姓 名: 学 号: 实 验 日 期 2015 年 05 月 26 日自评成绩:97 一、实验目的二、实验内容与结果题目1:最小二乘拟合源程序1#include#include using namespace std;float f(int i,int j,int n,float x20)/计算矩阵的函数int k;float s=0;for(k=0;kn;k+)s=s+pow(xk,i+j);return s;float f1(int i,int n,float y20,float x20)/计算右端项的函数floa
2、t s=0;int k;for(k=0;kn;k+)s=s+pow(xk,i)*yk;return s;float f2(float a10,double n)/f2,f3,f4,f5为简化平方根法解方程组的函数float s=0;int i;for(i=0;in;i+)s=s+ai*ai;return s;float f3(float r10,float a1010,int n)float b10,m=0;int i,j;for(i=0;in;i+)float s=0;for(j=0;jn;j+)s=s+rj*aji;bi=s;for(i=0;in;i+)m=m+bi*ri;return m
3、;float *f4(float a1010,float b10,int n)float *r;r=new float10;int i,j;for(i=0;in;i+)float s=0;for(j=0;jn;j+)s=s+aij*bj;ri=s;return r;void f5(int n,float e,float A1010,float B10,float l10)int i,k;float a,b,r10,r110,d10;float *ax;ax=f4(A,l,n);for(i=0;in;i+)ri=Bi-axi;di=ri;if(sqrt(f2(r,n)=e)for(i=0;in;
4、i+)coutlit;elsefor(k=0;kn;k+)a=f2(r,n)/f3(d,A,n);for(i=0;in;i+)li=li+a*di;ax=f4(A,l,n);for(i=0;in;i+)r1i=Bi-axi;if(sqrt(f2(r1,n)=e|k+1=n)for(i=0;in;i+)coutci=lin;break;elseb=f2(r1,n)/f2(r,n);for(i=0;in;i+)di=r1i+b*di;ri=r1i;int main()/主函数int n,i,j;cout以最小二乘拟合二次多项式为例endl;float x10,y10,a1010,b10;cout请输入数据的个数:n;for(i=0;in;i+)cout请输入xi=xi;cout请输入yi=yi;for(i=0;i3;i+)for(j=0;j3;j+)aij=f(i,j,n,x);for(i=0;i3;i+)bi=f1(i,n,y,x);cout由共轭梯度法求解方程组endl;cout请输入起始迭代序列l10:endl;float l10,e;for(i=0;i3;i+)coutlili;coute;f5(3,e,a,b,l);return 0;运行结果1专心-专注-专业