📄 拟合.c
字号:
# include <stdio.h>
# define m 6
# define n 1
void Gauss(float a[n+1][n+1],float b[n+1])
{
float c[n]={0};
int i,j,k,h;
float e=0.0001,f=.0;
float d[n+1],g[n+1][n+1];
for(k=0;k<n;k++)
{
for(i=k;i<n+1;i++)
if(a[i][k]>c[k])
{
c[k]=a[i][k];
h=i;
}
if(c[k]<e) break;
else
{
if(h!=k)
{
for(j=k;j<n+1;j++)
{
d[j]=a[k][j];
a[k][j]=a[h][j];
a[h][j]=d[j];
}
d[k]=b[k];
b[k]=b[h];
b[h]=d[k];
}
for(i=k+1;i<n+1;i++)
{
g[i][k]=a[i][k]/a[k][k];
a[i][k]=g[i][k];
for(j=k+1;j<n+1;j++)
a[i][j]=a[i][j]-g[i][k]*a[k][j];
b[i]=b[i]-g[i][k]*b[k];
}
}
}
b[n]=b[n]/a[n][n];
for(i=n-1;i>=0;i--)
{
for(j=i+1;j<n+1;j++)
f=f+a[i][j]*b[j];
b[i]=(b[i]-f)/a[i][i];
}
printf("\nB:");
for(i=0;i<n+1;i++)
printf(" %f",b[i]);
}
main()
{ float x[m]={36.9,46.7,63.7,77.8,84.0,87.5};
float y[m]={181,197,235,270,283,292};
int i,j,h,k,l=0;
float c[m][n+1],ct[n+1][m];
float a[n+1][n+1]={0};
float b[n+1]={0};
for(i=0;i<m;i++)
{ c[i][0]=1;
for(j=1;j<n+1;j++)
c[i][j]=x[i]*c[i][j-1]; /*printf("\n%f,%f\n",c[i][j],x[i]);*/
}
for(i=0;i<n+1;i++)
for(j=0;j<m;j++)
ct[i][j]=c[j][i]; /*printf("\n%f,%f",ct[i][j],c[j][i]);*/
for(i=0;i<n+1;i++)
{l=0;
for(j=0;j<n+1;j++)
{ k=0;
for(h=0;h<m;h++)
{ a[i][j]=ct[i][k]*c[h][l]+a[i][j];
/*printf("\na[%d][%d]=ct[%d][%d]%f*c[%d][%d]%f+%f",i,j,i,k,ct[i][k],h,l,c[h][l],a[i][j]);*/
k++;
}
l++;
}
}
for(i=0;i<n+1;i++)
{ k=0;
for(j=0;j<m;j++)
{ b[i]=ct[i][k]*y[j]+b[i];
k++;
}
}
Gauss(a,b);
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -