Advertisement
luizaspan

Eliminação LU

Sep 16th, 2015
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define N 4
  5.  
  6. int main(void)
  7. {
  8.     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};
  9.     int i,j,k;
  10.  
  11.     printf("Antes do escalonamento: \n");
  12.     for (i=0;i<N;i++)
  13.     {
  14.         for (j=0;j<N;j++)
  15.         {
  16.             printf("%8.3lf",A[i][j]);
  17.  
  18.             if (j==(N-1))
  19.                 printf("\n");
  20.             else
  21.                 printf(" ");
  22.         }
  23.     }
  24.  
  25.     for (i=0;i<N;i++)
  26.     {
  27.  
  28.         l[i][i] = 1.0;
  29.  
  30.         for (j=i+1;j<N;j++)
  31.         {
  32.             l[j][i]=A[j][i]/A[i][i];
  33.  
  34.             for (k=i;k<N;k++)
  35.             {
  36.                 A[j][k] = A[j][k] - l[j][i]*A[i][k];
  37.             }
  38.         }
  39.     }
  40.  
  41.     printf("U= \n");
  42.     for (i=0;i<N;i++)
  43.     {
  44.         for (j=0;j<N;j++)
  45.         {
  46.             printf("%8.3lf",A[i][j]);
  47.  
  48.             if (j==(N-1))
  49.                 printf("\n");
  50.             else
  51.                 printf(" ");
  52.         }
  53.     }
  54.  
  55.     printf("L= \n");
  56.     for (i=0;i<N;i++)
  57.     {
  58.         for (j=0;j<N;j++)
  59.         {
  60.             printf("%8.3lf",l[i][j]);
  61.  
  62.             if (j==(N-1))
  63.                 printf("\n");
  64.             else
  65.                 printf(" ");
  66.         }
  67.     }
  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.    
  96.     for (i=0;i<N;i++)
  97.     {
  98.         printf("%8.3lf",x[i]);
  99.  
  100.         if (i==(N-1))
  101.             printf("\n");
  102.         else
  103.             printf(" ");   
  104.     }
  105.  
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement