最小二乘法曲线拟合实验报告Word文档下载推荐.docx

上传人:b****2 文档编号:15000848 上传时间:2022-10-26 格式:DOCX 页数:6 大小:18.88KB
下载 相关 举报
最小二乘法曲线拟合实验报告Word文档下载推荐.docx_第1页
第1页 / 共6页
最小二乘法曲线拟合实验报告Word文档下载推荐.docx_第2页
第2页 / 共6页
最小二乘法曲线拟合实验报告Word文档下载推荐.docx_第3页
第3页 / 共6页
最小二乘法曲线拟合实验报告Word文档下载推荐.docx_第4页
第4页 / 共6页
最小二乘法曲线拟合实验报告Word文档下载推荐.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

最小二乘法曲线拟合实验报告Word文档下载推荐.docx

《最小二乘法曲线拟合实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《最小二乘法曲线拟合实验报告Word文档下载推荐.docx(6页珍藏版)》请在冰豆网上搜索。

最小二乘法曲线拟合实验报告Word文档下载推荐.docx

0.15,0.4,0.6,1.01,1.5,2.2,2.4,2.7,2.9,3.5,3.8,

  4.4,4.6,5.1,6.6,7.6;

  y:

4.4964,5.1284,5.6931,6.2884,7.0989,7.5507,7.5106,8.0756,

  7.8708,8.2403,8.5303,8.7394,8.9981,9.1450,9.5070,9.9115;

试作出幂函数拟合数据。

  2)已知一组数据:

0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1

-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2;

  试用最小二乘法求多项式函数,使与此组数据相拟合。

  4、题目:

  曲线拟合的最小二乘法

  5、原理:

  从整体上考虑近似函数同所给数据点(i=0,1,…,m)误差(i=0,1,…,m)的大小,常用的方法有以下三种:

一是误差(i=0,1,…,m)绝对值的最大值,即误差向量的∞—范数;

二是误差绝对值的和,即误差向量r的1—范数;

三是误差平方和的算术平方根,即误差向量r的2—范数;

前两种方法简单、自然,但不便于微分运算,后一种方法相当于考虑2—范数的平方,因此在曲线拟常采用误差平方和来度量误差(i=0,1,…,m)的整体大小.。

数据拟合的具体作法是:

对给定数据(i=0,1,…,m),在取定的函数类中,求,使误差(i=0,1,…,m)的平方和最小。

  6、设计思想:

从几何意义上讲,就是寻求与给定点(i=0,1,…,m)的距离平方和为最小的曲线。

函数称为拟合函数或最小二乘解,求拟合函数的方法称为曲线拟合的最小二乘法。

  7、对应程序:

  

(1)幂函数程序

  #include

  voidmain()

  {doublea0[16][2],a1[2][16],A[2][2],Y[2];

  inti,j,k;

  double

  x[16]={0.15,0.4,0.6,1.01,1.5,2.2,2.4,2.7,2.9,3.5,3.8,4.4,4.6,5.1,6.6,

  7.6},

  y[16]={4.4964,5.1284,5.6931,6.2884,7.0989,7.5507,7.5106,8.0756,7.8708,8.2403,8.5303,8.7394,8.9981,9.1450,9.5070,9.9115};

  doublem0,m1,n;

  for(i=0;

i  {a0[i][0]=1;

  a0[i][1]=log(x[i]);

  y[i]=log(y[i]);

  printf("

输入x的值:

"

);

%f"

a0[i][1]);

得到的对应的函数值:

%f\n"

y[i]);

}

\n"

i  for(j=0;

j  {a1[j][i]=a0[i][j];

}//以上正确

  A[0][0]=0;

A[0][1]=0;

A[1][0]=0;

A[1][1]=0;

Y[0]=0;

Y[1]=0;

i  {for(j=0;

j  {for(k=0;

k  {A[i][j]+=a1[i][k]*a0[k][j];

  }

j  {Y[i]+=a1[i][j]*y[j];

  m0=(Y[0]*A[1][1]-Y[1]*A[0][1])/(A[0][0]*A[1][1]-A[1][0]*A[0][1]);

n=(Y[0]*A[1][0]-Y[1]*A[0][0])/(A[0][1]*A[1][0]-A[1][1]*A[0][0]);

m1=exp(m0);

得到的幂函数x的系数是:

m1);

得到的幂函数x的指数是:

n);

  

(2)最小二乘法求多项式

  #include  

  #definen11//n个点

  #defineT3//T次拟合

  #definew1//权函数

  #definepRecIsIon0.00001

  floatpow_n(floata,intn)

  {inti;

  if(n==0)

  return

(1);

  floatres=a;

  for(i=1;

i  {res*=a;

  return(res);

  voidmutiple(floata[][n],floatb[][T+1],floatc[][T+1])

  {floatres=0;

j  {res=0;

  for(k=0;

k  {res+=a[i][k]*b[k][j];

  c[i][j]=res;

}}

  voidmatrix_trans(floata[][T+1],floatb[][n])

  {inti,j;

j  {b[j][i]=a[i][j];

  voidinit(floatx_y[][2],intn)

请输入%d个已知点:

i  {printf("

(x%dy%d):

i,i);

  scanf("

%f%f"

}

  voidget_A(floatmatrix_A[][T+1],floatx_y[][2],intn)

j  {matrix_A[i][j]=w*pow_n(x_y[i][0],j);

  voidprint_array(floatarray[][T+1],intn)

j  {printf("

%-g"

array[i][j]);

  voidconvert(floatargu[][T+2],intn)

  {inti,j,k,p,t;

  floatrate,temp;

i  {for(j=i;

j  {if(argu[i-1][i-1]==0)

  {for(p=i;

p  {if(argu[p][i-1]!

=0)break;

  if(p==n)

  {printf("

方程组无解!

exit(0);

  for(t=0;

t  {temp=argu[i-1][t];

  argu[i-1][t]=argu[p][t];

  argu[p][t]=temp;

  rate=argu[j][i-1]/argu[i-1][i-1];

  for(k=i-1;

k  {argu(:

最小二乘法曲线拟合实验报告)[j][k]-=argu[i-1][k]*rate;

  if(fabs(argu[j][k])  argu[j][k]=0;

}}}

  voidcompute(floatargu[][T+2],intn,floatroot[])

  floattemp;

  for(i=n-1;

i>

=0;

i--)

  {temp=argu[i][n];

  for(j=n-1;

j>

i;

j--)

  {temp-=argu[i][j]*root[j];

  root[i]=temp/argu[i][i];

  voidget_y(floattrans_A[][n],floatx_y[][2],floaty[],intn){inti,j;

i  {temp=0;

  for(j=0;

j  {temp+=trans_A[i][j]*x_y[j][1];

  y[i]=temp;

  voidcons_formula(floatcoef_A[][T+1],floaty[],floatcoef_form[][T+2]){inti,j;

j  {if(j==T+1)

  coef_form[i][j]=y[i];

  else

  coef_form[i][j]=coef_A[i][j];

  voidprint_root(floata[],intn)

%d个点的%d次拟合的多项式系数为:

n,T);

a[%d]=%g,"

i+1,a[i]);

拟合曲线方程为:

\ny(x)=%g"

a[0]);

+%g"

a[i]);

*x"

  voidprocess()

  {float

  x_y[n][2],matrix_A[n][T+1],trans_A[T+1][n],coef_A[T+1][T+1],coef_formu[T+1][T+2],y[T+1],a[T+1];

  init(x_y,n);

  get_A(matrix_A,x_y,n);

矩阵A为:

  篇二:

最小二乘法实验报告

  计算方法与实习实验报告

  2.已知实验数据如下:

  试用形如y=a+b?

?

2的抛物线进行最小二乘拟合。

  程序如下:

  doublekk()

  {

  doublek=0;

  for(inti=0;

i  {k+=1*1;

  returnk;

  doublekj(doublex[4])

i  {k+=x[i]*x[i];

  doublejj(doublex[4])

i  {k+=x[i]*x[i]*x[i]*x[i];

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1