Advertisement
luizaspan

[PROVA FSC_COMP] Sist. lineares: eliminação LU

Sep 24th, 2015
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 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. int main(void)
  40. {
  41.     double A[N][N]={{2,1,4,1},{3,4,-1,-1},{1,-4,1,5},{2,-2,1,3}}, b[N]={-4,3,9,7}, l[N][N]={0}, y[N]={0}, x[N]={0};
  42.     int i,j,k;
  43.  
  44.     printf("Antes do escalonamento: \n");
  45.     print(N,A);
  46.  
  47.     for (i=0;i<N;i++)
  48.     {
  49.  
  50.         l[i][i] = 1.0;
  51.  
  52.         for (j=i+1;j<N;j++)
  53.         {
  54.             l[j][i]=A[j][i]/A[i][i];
  55.  
  56.             for (k=i;k<N;k++)
  57.             {
  58.                 A[j][k] = A[j][k] - l[j][i]*A[i][k];
  59.             }
  60.         }
  61.     }
  62.  
  63.     printf("U= \n");
  64.     print(N,A);
  65.  
  66.     printf("L= \n");
  67.     print(N,l);
  68.  
  69.     for (i=0;i<N;i++) // SUBSTITUIÇÃO PROGRESSIVA
  70.     {
  71.         double soma = b[i];
  72.  
  73.         for (j=0;j<i;j++)
  74.         {
  75.             soma-=l[i][j]*y[j];
  76.         }
  77.  
  78.         y[i]=soma;
  79.     }
  80.  
  81.     for (i=N-1;i>=0;i--) // SUBSTITUIÇÃO REGRESSIVA
  82.     {
  83.         double soma = y[i];
  84.  
  85.         for (j=i+1;j<N;j++)
  86.         {
  87.             soma-=A[i][j]*x[j];
  88.         }
  89.  
  90.         x[i]=soma/A[i][i];
  91.     }
  92.  
  93.  
  94.     printf("Solução: \n");
  95.     printvec(N,x);
  96.  
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement