2.已知实验数据如下:
Xi Yi 1.0 3.8 2.5 1.50 3.5 26.0 4.0 33.0 试用形如y=a+b𝑥2的抛物线进行最小二乘拟合。 程序如下:
#include double kj(double x[4]) { double k=0; for(int i=0;i<4;i++) {k+=x[i]*x[i];} return k; } double jj(double x[4]) { double k=0; for(int i=0;i<4;i++) {k+=x[i]*x[i]*x[i]*x[i];} return k; } double yk(double y[4]) { double k=0; for(int i=0;i<4;i++) {k+=y[i];} return k; } double yj(double x[4],double y[4]) { double k=0; for(int i=0;i<4;i++) {k+=y[i]*x[i]*x[i];} return k; } void main(void) { double X[4]={1.0,2.5,3.5,4.0}; double Y[4]={3.8,1.50,26.0,33.0}; double A[2][3]; double a=0,b=0; A[0][0]=kk(); A[0][1]=kj(X); A[1][0]=kj(X); A[1][1]=jj(X); A[0][2]=yk(Y); A[1][2]=yj(X,Y); double k=A[1][0]/A[0][0]; A[1][0]=0; A[1][1]=A[1][1]-k*A[0][1]; A[1][2]=A[1][2]-k*A[0][2]; b=A[1][2]/A[1][1]; a=(A[0][2]-A[0][1]*b)/A[0][0]; cout<<\"二次曲线拟合为:\"<<\"y=\"<拟合结果如 结果与答案几乎没有误差,可以认为算法正确,实验基本成功。 心得:经过本次试验,认识了最先二乘法在曲线拟合时的优点,这激发了我认真学习最小二乘法拟合曲线的兴趣,一定要好好掌握并在生活中加以应用。 因篇幅问题不能全部显示,请点此查看更多更全内容