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

📄 gauss(4).txt

📁 列主消元法解线性方程组的C语言程序,欢迎下载
💻 TXT
字号:
#include <stdio.h>
#include <math.h>
#define N 20
int n;
void input(float a[][N+2])
{
int i,j;
printf("input like this:\n");
for(i=1;i<=n;i++)
    {
      for(j=1;j<=n;j++)
          printf("a[%d][%d] ",i,j);
      printf("b[%d]\n",i);
     }
for(i=1;i<=n;i++)
    for(j=1;j<=n+1;j++)
      scanf("%f",&a[i][j]);
}
void copy(float a[][N+2],float b[][N+2])
{
int i,j;
for(i=1;i<=n;i++)
    for(j=1;j<=n+1;j++)
      b[i][j]=a[i][j];
}
void sort(float a[][N+2],int i)
{
int j,max_i;
float max,temp;
max=a[i][i];
max_i=i;
for(j=i+1;j<=n;j++)
    if(fabs(a[j][i])>fabs(max))
        {max=a[j][i];max_i=j;}
if(max_i!=i)
    for(j=i;j<=n+1;j++)
      {temp=a[i][j];a[i][j]=a[max_i][j];a[max_i][j]=temp;}
}
void calculate(float a[][N+2])
{
int i,m,j;
float l;
for(i=1;i<n;i++)
    {
     sort(a,i);
     for(m=i+1;m<=n;m++)
       {
         l=a[m][i]/a[i][i];
         for(j=i+1;j<=n+1;j++)
         a[m][j]-=l*a[i][j];
       }
    }
}
void back(float a[][N+2],float *x)
{
int i,j;
float sum;
for(i=n;i>0;i--)
    {
      sum=0;
      for(j=i+1;j<=n;j++)
        sum+=a[i][j]*x[j];
      x[i]=(a[i][n+1]-sum)/a[i][i];
}
}
void output(float *x)
{
int i;
for(i=1;i<=n;i++)
    printf("x%d=%f ",i,x[i]);
printf("\n");
}
void check(float b[][N+2],float *x)
{
int i,j;
float sum;
for(i=1;i<=n;i++)
   {
    sum=0;
    for(j=1;j<=n+1;j++)
      {
    if(j<=n)
      {
        sum+=b[i][j]*x[j];
        if(j==n) printf("%.3f*x%d",b[i][j],j);
        else printf("%.3f*x%d+",b[i][j],j);
          }
    else printf("=%f",sum);
      }
    printf("\n");
   }
}
main()
{
int i;
float a[N+1][N+2],x[N],b[N+1][N+2];
while(1){
clrscr();
printf("input n(0-%d,0:exit):",N);
do{
scanf("%d",&n);
if(n==0) return 0;
if(n<0||n>N) printf("error,input again(0-%d,0:exit):",N);
}while(n<0||n>N);
input(a);
copy(a,b);
calculate(a);
back(a,x);
output(x);
check(b,x);
getch();
}
}

⌨️ 快捷键说明

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