用c语言用函数拟合数据点 c语言 拟合( 二 )


for (i=0;in;i++)
{
tempx[i]=1;
tempy[i]=y[i];
}
for (i=0;i2*poly_n+1;i++)
for (sumxx[i]=0,j=0;jn;j++)
{
sumxx[i]+=tempx[j];
tempx[j]*=x[j];
}
for (i=0;ipoly_n+1;i++)
for (sumxy[i]=0,j=0;jn;j++)
{
sumxy[i]+=tempy[j];
tempy[j]*=x[j];
}
for (i=0;ipoly_n+1;i++)
for (j=0;jpoly_n+1;j++)
ata[i*(poly_n+1)+j]=sumxx[i+j];
gauss_solve(poly_n+1,ata,a,sumxy);
free(tempx);
free(sumxx);
free(tempy);
free(sumxy);
free(ata);
}
void gauss_solve(int n,double A[],double x[],double b[])
{
int i,j,k,r;
double max;
for (k=0;kn-1;k++)
{
max=fabs(A[k*n+k]); /*find maxmum*/
r=k;
for (i=k+1;in-1;i++)
if (maxfabs(A[i*n+i]))
{
max=fabs(A[i*n+i]);
r=i;
}
if (r!=k)
for (i=0;in;i++)/*change array:A[k]A[r] */
{
max=A[k*n+i];
A[k*n+i]=A[r*n+i];
A[r*n+i]=max;
}
max=b[k];/*change array:b[k]b[r]*/
b[k]=b[r];
b[r]=max;
for (i=k+1;in;i++)
{
for (j=k+1;jn;j++)
A[i*n+j]-=A[i*n+k]*A[k*n+j]/A[k*n+k];
b[i]-=A[i*n+k]*b[k]/A[k*n+k];
}
}
怎么用c语言编制程序在微机上实现数据的理论拟合、过零旋转拟合、端点拟合、端点平移拟合?首先用c语言用函数拟合数据点 , 谁都不能根据仅有用c语言用函数拟合数据点的数据集来断定这就是什么曲线 。
我们只能通过对数据观察推测可能会符合什么形式的曲线 。
已知10个数据点的训练集用c语言用函数拟合数据点,可以采用多项式拟合的办法来做,但是不建议使用C语言来实现 。
这种数学问题用matlab很容易就可以解决,c语言写要麻烦的多的多 。比如你采用最小二乘法的话,
你需要自己用c语言写很多矩阵运算 。
关于用c语言用函数拟合数据点和c语言 拟合的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读