计算方法上机5曲线拟合

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告名称曲线拟合

班级:学号:姓名:成绩:

1实验目的

1)了解最小二乘法的基本原理,通过计算机解决实际问题;

2)了解超定方程组的最小二乘解法。

2 实验内容

由化学实验得到的某物质浓度与时间的关系如下:

时间t 1 2 3 4 5 6 7 8

浓度y 4.00 6.40 8.00 8.80 9.22 9.50 9.70 9.86

时间t 9 10 11 12 13 14 15 16

浓度y 10.00 10.20 10.32 10.42 10.50 10.55 10.58 10.60 3实验步骤

算法

已知数据对(xj,yj)(j=1,2...n),求多项式p(x)=∑aix^i(m

其中

Sk=∑xj^k(k=0,1,2...2m)

Tk=∑yjxj^k(k=0,1,2...m)

然后只要调用解线性方程的函数程序即可。

4 程序设计

C语言程序:

#include

#include

void main()

{

int i;

float a[3];

float x[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

float

y[16]={4,6.4,8,8.8,9.22,9.5,9.7,9.86,10,10.2,10.32,10.42,10.50,10.55,10.58,10.6};

void Approx(float[],float[],int,int,float[]);

Approx(x,y,16,2,a);

for(i=0;i<=2;i++)

printf("a[%d]=%f\n",i,a[i]);

}

void Approx(float x[],float y[],int m,int n,float a[])

{

int i,j,t;

float *c=new float[(n+1)*(n+2)];

float power(int,float);

void ColPivot(float*,int,float[]);

for(i=0;i<=n;i++)

{

for(j=0;j<=n;j++)

{

*(c+i*(n+2)+j)=0;

for(t=0;t<=m-1;t++)

*(c+i*(n+2)+j)+=power(i+j,x[t]);

}

*(c+i*(n+2)+n+1)=0;

for (j=0;j<=m-1;j++)

*(c+i*(n+2)+n+1)+=y[j]*power(i,x[j]);

}

ColPivot(c,n+1,a);

delete c;

}

void ColPivot(float*c,int n,float x[])

{

int i, j, t, k ;

float p;

for (i=0;i<=n-2;i++)

{

k=i;

for(j=i+1;j<=n-1;j++)

if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))

k=j;

if(k!=i)

for(j=i;j<=n;j++)

{

p=*(c+i*(n+1)+j);

*(c+i*(n+1)+j)=*(c+k*(n+1)+j);

*(c+k*(n+1)+j)=p;

}

for(j=i+1;j<=n-1;j++)

{

p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));

for(t=i;t<=n;t++) *(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));

}

}

for(i=n-1;i>=0;i--)

{

for(j=n-1;j>=i+1;j--)(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));

x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));

}

}

float power(int i,float v)

{

float a=1;

while(i--)a*=v;

return a;

}

4实验结果及分析

算法的输出结果:

所以二次拟合多项式为:y=4.3875+1.065962*t-0.044466*t^2

5总结

通过曲线拟合,最小二乘法的基本原理的学习,我学会了利用计算机解决现实实际问题中的曲线拟合。

6参考资料

【1】孙志忠,吴宏伟,袁慰平,闻震初,计算方法与实习.第四版.南京:东南大学出版社

【2】谭浩强.C程序设计.第四版.北京:清华大学出版社

相关文档
最新文档