最小二乘法拟合c++编程问题

2024-12-13 23:39:35
推荐回答(1个)
回答1:

#include
#include

void Guass(int n,float Array[][10])
{
float s,u;
int i,j,k,a,x,y;
for(i=0;i {
s=Array[i][i];
k=i;
for(a=i+1;a {
if(fabs(s) < fabs(Array[a][i]))
{
s=Array[a][i];
k=a;
}
}
if(k!=i)
{
for(j=i;j {
u=Array[i][j];Array[i][j]=Array[k][j];Array[k][j]=u;
}
}
for(x=i+1;x {
u=Array[x][i]/s;
for(y=i;y {
Array[x][y]=Array[x][y]-u*Array[i][y];
}
}
}
for(x=n-1;x>=0;x--)
{
s=0;
for(y=x+1;y s=s+Array[x][y]*Array[y][n];
Array[x][n]=(Array[x][n]-s)/(Array[x][x]);//得到结果
}
for(i=0;i}

int main()
{
int n,i,j;
float Array[10][10];
scanf("%d",&n);
for(i=0;i {
for(j=0;j scanf("%f",&Array[i][j]);
}
Guass(n,Array);
return 0;
}