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

📄 gauss .c

📁 gauss顺序消去法及其全选主元的GAUSS消去法的C语言实现
💻 C
字号:
#include "stdio.h" 
#include "stdlib.h" 
#include "math.h" 
int rgauss(a,b,n,x) 
int n; 
double a[],b[],x[]; 
{int l,k,i,j,p; 
double d,t; 
l=1;                      /*置非奇异标志*/
for(k=0;k<=n-2;k++) 
{d=0.0; 

d=a[k*n+k]; 
for(j=k+1;j<=n-1;j++)      /*归一化*/
  {p=k*n+j;a[p]=a[p]/d;} 
b[k]=b[k]/d; 
for(i=k+1;i<=n-1;i++)     /*消元*/
  {for(j=k+1;j<=n-1;j++) 
    {p=i*n+j; 
     a[p]=a[p]-a[i*n+k]*a[k*n+j]; 
     } 
   b[i]=b[i]-a[i*n+k]*b[k]; 
  } 
} 
d=a[(n-1)*n+n-1]; 
if(fabs(d)+1.0==1.0)      /*奇异返回*/
  {printf("fail\n"); 
    return(0); 
  } 
x[n-1]=b[n-1]/d;        /*计算解向量的最后一个分量*/
for(i=n-2;i>=0;i--) 
  {t=0.0; 
   for(j=i+1;j<=n-1;j++)    /*回代*/
     t=t+a[i*n+j]*x[j]; 
     x[i]=b[i]-t; 
  } 
return(1);                        /*返回正常标志*/
} 
/**************************************************/ 
main() 
{int i; 
static double a[4][4]=
	{ {0.94455,-2.81716,-2.25806,-2.89224},
	{-6.20716,-3.85174,9.77783,3.49712},
	{-7.56157,-4.03668,9.38475,-8.64498},
	{-8.94467,-5.31114,-0.98666,-4.10932} };
	static double x[4], b[4]={1.51158,-6.46352,1.23264,0.61068};
i=rgauss(a,b,4,x); 
if(i!=0) 
  for(i=0;i<=3;i++) 
    printf("x(%d)=%lf\n",i,x[i]); 
} 

⌨️ 快捷键说明

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