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

📄 guass(2).txt

📁 GUASS算法的列主元消去法
💻 TXT
字号:

/* 高斯列主元消去法解线代数方程组 */
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
void max_ele(double af[][21],int n,int k)  /* 选主元 */
  {double max1,t;
   int i,j;
   max1=af[k][k]; i=k;
   for (j=k+1;j<=n;j++)
     if(fabs(af[j][k])>fabs(max1)) i=j;
   if(i>k)
     for (j=k;j<=n+1;j++)
       {t=af[i][j],af[i][j]=af[k][j],af[k][j]=t;}
  }
int gauss(double a[][20],double f[],double x[],int n)
/* Guass 消去法,引入af[20[21],x[]是为了不改变矩阵a[][],f[]
   及简化程序  */
 {int i,j,k;
  double af[20][21],del,t;
  for(i=1;i<=n;i++)
    { for(j=1;j<=n;j++)  af[i][j]=a[i][j];
      af[i][n+1]=f[i];
    }
  for (k=1;k<n;k++)
    { max_ele(af,n,k);
      del=af[k][k];
      if (fabs(del)<1e-7)
       {printf("Single! press any key return...\n");
        getchar();
        return 0;}
      for (j=k;j<=n+1;j++)  af[k][j]/=del;
      for (i=k+1;i<=n;i++)
       { t=af[i][k];
         for (j=k;j<=n+1;j++)
           af[i][j]-=af[k][j]*t;
       }
     }
  del=af[n][n];
  for (j=n;j<=n+1;j++) af[n][j]/=del;
  for (j=1;j<=n;j++) x[j]=af[j][n+1];
  for (i=n-1;i>0;i--)
    for (j=n;j>i;j--)  x[i]-=x[j]*af[i][j];
  return 1;
 }
main()
 { double a[20][20], f[20],x[20];
   int i,j,n;
   printf("Input n(<20)");
   scanf("%d",&n);
   /* 随机生成系数矩阵及右端项,进行检验 */
   for (i=1;i<=n;i++)
      for (j=1;j<=n;j++) a[i][j]=(float)rand()/100.0;
   for (i=1;i<=n;i++)
     { for (j=1;j<=n;j++) printf("%8.4f ",a[i][j]);
       printf("\n");}
   for (i=1;i<=n;i++)
     { f[i]=0;
       for (j=1;j<=n;j++) f[i]+=a[i][j];
      }
   gauss(a,f,x,n);
   for (i=1;i<=n;i++)  printf("%lf ",x[i]);
   printf("\n");
 }

⌨️ 快捷键说明

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