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

📄 gauss.cpp

📁 hga是一种混合遗传算法c程序源代码
💻 CPP
字号:
 /*
机辅要求:
    一.线性直流电阻电路
    二.无受控源
    三.每一复合支路均含有电阻元件
机辅步骤:
    一.编写输入电路信息的C程序input();
  
    二.编写节点电压方程(增广系数矩阵)equation();
  
    三.求解(高斯消元法)gs();
  
    四.求元件及支路信息,验证节点电压的正确性function();
  
    五.形成输出文件(系数增广矩阵、独立节点电压、支路的电压电流和功率、元件的电压电流和功率)output();
程序框架: 
main()
 {
  input();
  equation();
  gs();
  function();
  output();
 }
*/
					//	GAUSS例程
#include <stdio.h>
#define EPS 0.0001
int n;
float a[20][21];
void input()
{int i,j;
 char datfile[11];
 FILE *fp1;
 clrscr();
 printf("\t输入数据文件名: ");
 scanf("%s",datfile);
 if((fp1=fopen(datfile,"r+"))==NULL)
   {printf("\t数据文件 %s 不存在按任意键返回...",datfile);
    getch();
    exit(0);
   }
 fscanf(fp1,"%d",&n);
 for(i=1;i<=n;i++)
    for(j=1;j<=n+1;j++)
       fscanf(fp1,"%f",&a[i][j]);
 fclose(fp1);
}

float x[20];
void gauss()
{int i,j,k;
 for(k=1;k<=n-1;k++)
    {
		
	  if(a[k][k]>=0)
       for(i=k+1;i<=n;i++)
			{
			    if(a[i][k]>0)
	            for(j=k;j<=n+1;j++)
		            a[k][j]+=a[i][j];
	            if(a[i][k]<0)
	            for(j=k;j<=n+1;j++)
		            a[k][j]-=a[i][j];
			 }
	   
     else
      for(i=k+1;i<=n;i++)
	  {
		  if(a[i][k]>0)
	      for(j=k;j<=n+1;j++)
	         a[k][j]-=a[i][j];
	      if(a[i][k]<0)
	      for(j=k;j<=n+1;j++)
	         a[k][j]+=a[i][j];
	  }

     }
    if(fabs(a[k][k])<EPS) 
		goto end;
    for(i=k+1;i<=n;i++)
      for(j=n+1;j>=k;j--)
	  {a[i][j]=a[i][j]-a[k][j]*a[i][k]/a[k][k];}
    for(k=n;k>=2;k--)
      for(i=1;i<=k-1;i++)
        {a[i][n+1]-=a[k][n+1]*a[i][k]/a[k][k];a[i][k]=0;}
    for(k=1;k<=n;k++)
	{a[k][n+1]=a[k][n+1]/a[k][k];x[k]=a[k][n+1];}
 end:;
}

void output()
{int i;
 char keyfile[11],z;
 FILE *fp2;
 printf("\t 输入结果文件名:");
 scanf("%s",keyfile);
 if((fp2=fopen(keyfile,"w+"))!=NULL)
   {printf("\t 数据文件 %s 已经存在,是否覆盖(Y/N)?",keyfile);
   z=getch();
   if(z=='n'||z=='N')
    exit(0);
   }
 for(i=1;i<=n;i++)
    fprintf(fp2,"\t%8.4f\n",x[i]);
 fclose(fp2);
}

void main()
{input();
 gauss();
 output();
}

⌨️ 快捷键说明

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