Advertisement
Guest User

Untitled

a guest
Feb 24th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.55 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. #define TAM 3
  5.  
  6. void gerarMatriz(float matriz_L[TAM][TAM],float matriz_U[TAM][TAM],float matriz_A[TAM][TAM]);
  7. void imprimirMatriz(float matriz[TAM][TAM]);
  8. void calcularInferior(float matriz_L[TAM][TAM],float b[TAM],float y[TAM]);
  9. void calcularSuperior(float matriz_U[TAM][TAM],float x[TAM],float y[TAM]);
  10.  
  11. int main(){
  12.     float matriz_L[TAM][TAM],matriz_U[TAM][TAM];
  13.     float matriz_A[TAM][TAM]={3,2,4,1,1,2,4,3,-2};
  14.     float b[TAM]={1,2,3},x[TAM],y[TAM]={0,0,0};
  15.     printf("\n\n-----MATRIZ A-----\n");
  16.     imprimirMatriz(matriz_A);
  17.     gerarMatriz(matriz_L,matriz_U,matriz_A);
  18.     printf("\n\n-----MATRIZ L-----\n");
  19.     imprimirMatriz(matriz_L);
  20.     printf("\n\n-----MATRIZ U-----\n");
  21.     imprimirMatriz(matriz_U);
  22.     calcularInferior(matriz_L,b,y);
  23.     calcularSuperior(matriz_U,x,y);
  24.     printf("\n\n\nResultado do sistema: ");
  25.     for(int i=0;i<TAM;i++){
  26.         printf("%.2f ",x[i]);
  27.     }
  28. }
  29.  
  30. void gerarMatriz(float matriz_L[TAM][TAM],float matriz_U[TAM][TAM],float matriz_A[TAM][TAM]){
  31.     int i,j,k,p;
  32.     float soma;
  33.    
  34.     //Preenchimento da matriz L
  35.     for(i=TAM-1;i>=0;i--){
  36.         for(j=TAM-1;j<i;j--){
  37.             matriz_L[i][j]=0;
  38.         }
  39.     }
  40.     //preenchimento da matriz U
  41.     for(i=0;i<TAM;i++){
  42.         for(j=0;j<i;j++){
  43.             matriz_U[i][j]=0;
  44.         }
  45.     }
  46.  
  47.     for(p=0;p<TAM;p++){
  48.         matriz_L[p][p]=1;
  49.         for(j=p;j<TAM;j++){
  50.             soma=0;
  51.             for(k=0;k<p;k++){
  52.                 soma+=(matriz_L[p][k]*matriz_U[k][j]);
  53.             }
  54.             matriz_U[p][j]=matriz_A[p][j]-soma;
  55.         }
  56.         for(i=p+1;i<TAM;i++){
  57.             soma=0;
  58.             for(k=0;k<p;k++){
  59.                 soma+=matriz_L[i][k]*matriz_U[k][p];
  60.             }
  61.             matriz_L[i][p]=(1/matriz_U[p][p])*(matriz_A[i][p]-soma);
  62.         }
  63.     }  
  64.    
  65. }
  66.  
  67. void calcularInferior(float matriz_L[TAM][TAM],float b[TAM],float y[TAM]){
  68.     float soma=0;
  69.     for(int i=0;i<TAM;i++){
  70.         for(int j=0;j<i;j++){
  71.             soma+=(matriz_L[i][j]*y[j]);
  72.         }
  73.         y[i]=(b[i]-(soma))/matriz_L[i][i];
  74.         soma=0;
  75.     }
  76. }
  77.  
  78. void calcularSuperior(float matriz_U[TAM][TAM],float x[TAM],float y[TAM]){
  79.     int i, j;
  80.     float soma=0;
  81.     for (i=TAM-1;i>=0;i--){
  82.         for (j=i+1;j<TAM;j++){
  83.             soma+=(matriz_U[i][j]*x[j]);
  84.         }
  85.         x[i]=(y[i]-soma)/matriz_U[i][i];
  86.     }
  87. }
  88.  
  89. void imprimirMatriz(float matriz[TAM][TAM]){
  90.     for(int i=0;i<TAM;i++){
  91.         for(int j=0;j<TAM;j++){
  92.             printf("%.2f  ",matriz[i][j]);
  93.         }
  94.         printf("\n");
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement