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

📄 gauss.c

📁 数值分析的高斯求解法,是用C编写的,希望大家互相参考!!1
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define MAX_n 100
#define PRECISION 0.000001

void MatrixInput(float A[][MAX_n],int m,int n)
{
    int i,j;
    float ftmp;
    printf("\n===Begin input Matrix elements===\n");
    
    for(i=1;i<=m;++i)
    {
        printf("Input_Line %d:",i);
        for(j=1;j<=n;++j)
        {
            scanf("%f",&ftmp);
            A[i][j]=ftmp;
        }
    }
}

void MatrixOneColumnOutput(float A[][MAX_n],int n,int k)
{
    int i;
    for(i=1;i<=n;++i)

    printf("\nx[%d]=%f",i,A[i][k]);
}

int UpTriangle(float U[][MAX_n],int n)
{
    int i,j;
    for(i=n;i>0;--i)
    {
        if(fabs(U[i][i])<PRECISION)
        return 1;
        for(j=i+1;j<=n;++j)
        U[i][n+1]-=U[i][j]*U[j][n+1];
        U[i][n+1]/=U[i][i];
    }
    return 0;
}

void Swap(float *a,float *b)
{
    float ftmp;
    ftmp=*a;
    *a=*b;
    *b=ftmp;
}

int GaussElimination_column_select(float A[][MAX_n],int n)
{
    int i,j,k;
    float ftmp;
    for(i=1;i<n;++i)
    {
    for(k=i,j=i+1;j<=n;++j)
    if(fabs(A[j][i])>fabs(A[k][i])) 
    k=j;
    for(j=i;j<=n+1;++j)
    Swap(&A[i][j],&A[k][j]);
    if(fabs(A[i][i]<PRECISION))
     return 1;
     for(j=i+1;j<=n;++j)
       for(k=i+1;k<=n+1;++k)
          A[i][k]-=A[i][k]*A[j][i]/A[i][i];
      }
      UpTriangle(A,n);
      return 0;
  }
  
int main()
{
  int n;
  float A[MAX_n][MAX_n];
  
  printf("\nInput n=");
  scanf("%d",&n);
  if(n>=MAX_n-1)
  {
      printf("\n007n must <%d!",MAX_n);
      exit(0);
  }
  MatrixInput(A,n,n+1);
  if(GaussElimination_column_select(A,n))
     printf("\nGauss Failed!");
     else
     {
         printf("\nOutput Solution:");   
         MatrixOneColumnOutput(A,n,n+1);
     }
     printf("\n\n007Press any key to quit!\n");
     getch();
 }        
          
          
          
     
    
                        
                

⌨️ 快捷键说明

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