高斯消元模板

来源:互联网 发布:陈震淘宝店叫什么 编辑:程序博客网 时间:2024/05/29 23:47
//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    }}

原创粉丝点击