//f(n)=f(n-1)*a+f(n-2)*b+f(n-3)*c+f(n-4)*d情况下的高斯消元
const int Matsize=5;
double mat[Matsize][Matsize]=
{
95,36,11,5,281,
281,95,36,11,781,
781,281,95,36,2245,
2245,781,281,95,6336
};
void Gauss(int n)
{
for(int i=0;i<n;i++)
{
int r=i;
for(int j=i+1;j<n;j++)
{
if(fabs(mat[j][i])>fabs(mat[r][i])) r=j;
}
if(r!=i)
{
for(int j=0;j<=n;j++)
{
swap(mat[r][j],mat[i][j]);
}
}
for(int k=i+1;k<n;k++)
{
double f=mat[k][i]/mat[i][i];
for(int j=i;j<=n;j++)mat[k][j]-=f*mat[i][j];
}
}
for(int i=n-1;i>=0;i--)
{
for(int j=i+1;j<n;j++)
{
mat[i][n]-=mat[j][n]*mat[i][j];
}
mat[i][n]/=mat[i][i];
}
}
int main()
{
Gauss(4);
for(int i=0;i<4;i++)
{
printf("%.2f\n",mat[i][4]);//mat[0/1/2/3][4]分别对应a,b,c,d
}
}
高斯消元模板
最新推荐文章于 2021-08-10 19:18:07 发布