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

📄 gaussqj.txt

📁 本程序使用高斯消去法编写的线性方程组求解程序
💻 TXT
字号:
#include "math.h"
#define eps 1e-7
#define Max 20
#include "stdio.h"



int sortgauss(double a[Max][Max],double *p,int n)
{
	int k,r,i,j,m;
	double t,s,u;
	//选主元
	for(k=0;k<n-1;k++)
	{
		t=a[k][k];
		r=k;
		for(i=k+1;i<n;i++)
			if(t<a[i][k])
			{
				r=i;t=fabs(a[i][k]);
			}
			if(t<eps)
				return(0);
     //换行
			if(r!=k)
			{
				*p=-*p;
				for(j=k;j<n+1;j++)
				{
					u=a[r][j];
					a[r][j]=a[k][j];
					a[k][j]=u;
				}
			}
	 //消元
			for(i=k+1;i<n;i++)
			{
				a[i][k]=a[i][k]/a[k][k];
				for(j=k+1;j<n+1;j++)
					a[i][j]=a[i][j]-a[i][k]*a[k][j];
			}
			*p=*p*a[k][k];
	}
	        *p=*p*a[k][k];
    //回带
	a[n-1][n]=a[n-1][n]/a[n-1][n-1];
	for(m=n-2;m>=0;m--)
	{
		s=0;
		for(j=m+1;j<=n-1;j++)
		{
			s=s+a[m][j]*a[j][n];
		}
		
			a[m][n]=(a[m][n]-s)/a[m][m];
	}
}

main()
{
	int i,j,n;
	double p=1,a[Max][Max]={0.00};
	char path [80],ch;
	//通过文件读入系数矩阵
	printf("请输入系数矩阵文件路径:");
	scanf("%s",path);
	FILE *fp;
	fp=fopen(path,"r");
	if(fp==NULL)
		return(0);
   else
   {
	    rewind(fp);
	    fscanf(fp,"%d",&n);
	  //  ch=fgetc(fp);
        for(i=0;i<n;i++)
	{
		for(j=0;j<n+1;j++)
		{
			fscanf(fp,"%lf ",&a[i][j]);
		   // ch=fgetc(fp); 
		}
	}
   }
   
	
    if(	sortgauss( a,&p,n)==0)
	{
		printf("fails!!\n");
		return(1);	
	}
	for(i=0;i<n;i++)
	{	printf("x[%d]=%f\t",i,a[i][n]);
	    if((i+1)%4==0)
		   printf("\n");
	}
	printf("\n det=%f\n",p);

 fclose(fp);
	
}
	






⌨️ 快捷键说明

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