Advertisement
luizaspan

[PROVA FSC_COMP] Sist. lineares: eliminação gaussiana (ex.)

Sep 24th, 2015
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.63 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define N 4
  5.  
  6. double print(int n, double y[n][n])
  7. {
  8.         int i,j,k;
  9.  
  10.         for (i=0;i<n;i++)
  11.     {
  12.         for (j=0;j<n;j++)
  13.         {
  14.             printf("%8.3lf",y[i][j]);
  15.  
  16.             if (j==(n-1))
  17.                 printf("\n");
  18.             else
  19.                 printf(" ");
  20.         }
  21.     }
  22. }
  23.  
  24. double printvec(int n, double x[n])
  25. {
  26.         int i;
  27.  
  28.     for (i=0;i<N;i++)
  29.     {
  30.         printf("%8.3lf",x[i]);
  31.  
  32.         if (i==(n-1))
  33.             printf("\n");
  34.         else
  35.             printf(" ");    
  36.     }
  37. }
  38.  
  39. /*4V1   -V2   -V3   -V4   =   V
  40. 3V3   -V1   -V4         =   V
  41. 3V2   -V1   -V4         =   0
  42. 4V4   -V2   -V1   -V3   =   0
  43.  
  44.  4  -1  -1  -1  =  V
  45. -1   0   3  -1  =  V
  46. -1   3   0  -1  =  0
  47. -1  -1  -1   4  =  0*/
  48.  
  49. int main(void)
  50. {
  51.     double A[N][N]={{4,-1,-1,-1},{-1,0,3,-1},{-1,3,0,-1},{-1,-1,-1,4}}, b[N]={5,5,0,0}, x[N]={0}; // POR LINHAS!
  52.     int i,j,k;
  53.  
  54.     printf("Antes do escalonamento: \n");
  55.     print(N,A); // o nome da matriz é A, A[N][N] é um número
  56.  
  57.     for (i=0;i<N;i++)
  58.     {
  59.         for (j=i+1;j<N;j++)
  60.         {
  61.             double c=A[j][i]/A[i][i];
  62.  
  63.             for (k=i;k<N;k++)
  64.             {
  65.                 A[j][k]=A[j][k] - c*A[i][k];
  66.             }
  67.  
  68.             b[j]=b[j]-c*b[i];
  69.         }
  70.     }
  71.  
  72.     printf("Após o escalonamento: \n");
  73.     print(N,A);
  74.  
  75.  
  76.     for (i=N-1;i>=0;i--)
  77.     {
  78.         double soma = b[i];
  79.  
  80.         for (j=i+1;j<N;j++)
  81.         {
  82.             soma=soma-A[i][j]*x[j];
  83.         }
  84.  
  85.         x[i]=soma/A[i][i];
  86.     }
  87.  
  88.     printf("Solução: \n");
  89.     printvec(N,x);
  90.  
  91.  
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement