⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gaos.c

📁 高斯消去法 高斯消去法
💻 C
字号:
#include<stdio.h>           //高斯消去法列主元
#include<math.h>
 
Gaussdiedai(n,a,x)
     int n;
     double *a,*x;
{
     int i,j,k,r;              //k表示列号,r表示行号
     double m;
     for(k=0;k<n-1;k++)
     {
        r=k;
        m=fabs(a[k*(n+1)+k]);
        for(i=k+1;i<n;i++)
           if(fabs(a[i*(n+1)+k])>m)        //第k行k列与第k+1行k列的元素比较(从0行开始)
           {
               r=i;
               m=fabs(a[i*(n+1)+k]);
           }
        if(r>k)                           //最大元素所在行在之前原最大元素所在行之下,则换行
           for(j=k;j<n+1;j++)
           {
              m=a[k*(n+1)+j];
              a[k*(n+1)+j]=a[r*(n+1)+j];
              a[r*(n+1)+j]=m;
           }
        for(i=k+1;i<n;i++)                //消元
        {
           m=a[i*(n+1)+k]/a[k*(n+1)+k];
           for(j=k+1;j<n+1;j++)
              a[i*(n+1)+j]-=m*a[k*(n+1)+j];
        }
     }
     x[n-1]=a[(n-1)*(n+1)+n]/a[(n-1)*(n+1)+(n-1)];
     for(i=n-2;i>=0;i--)
     {
        m=a[i*(n+1)+n];
        for(j=i+1;j<n;j++)
           m-=a[i*(n+1)+j]*x[j];
        x[i]=m/a[i*(n+1)+i];
     }
}
 
main()
{
    double a[3][4]={{-3,2,6,4},{10,-7,0,7},{5,-1,5,6}},x[3];
    int i;
    Gaussdiedai(3,a,x);
    for(i=0;i<3;i++)
       printf("%f\n",x[i]);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -