Advertisement
orneto

eliminaçaogauss

May 5th, 2019
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define l 2 //define o número de linhas (modificar esse espaço para modificar a quantidade de linhas)
  5. #define c 3 //define o número de colunas (modificar esse espaço para modificar a quantidade de colunas)
  6.  
  7. void preencheMatriz(){
  8. double a[l][c];
  9. int i,j;
  10.  
  11. for(i=0;i<l;i++){ //essa funcao preenche a matriz
  12. for(j=0;j<c;j++){
  13. scanf("%lf",&a[i][j]);
  14. }
  15. }
  16.  
  17. EliminacaoGauss(a); //chama a funcao responsavel pela escalonamento da matriz
  18.  
  19. }
  20.  
  21. void EliminacaoGauss(double a[l][c]){
  22.  
  23. int k, i, j, s;
  24. int aux1;
  25. double m, M2[l];
  26.  
  27. for(aux1 = 0; aux1 < l ; aux1++){
  28. M2[aux1] = a[aux1][c-1]; //separa os coeficientes livres em um vetor
  29. }
  30.  
  31. imprimeMatriz(a);
  32. printf("\n\n");
  33.  
  34. for(k = 0; k < c; k++){
  35. for(i = k + 1; i < l; i++){
  36.  
  37. m = (a[i][k]/a[k][k]); //calcula o multiplicador
  38. a[i][k] = 0; //zera o valor de a[i][k]
  39. //exemplo: matriz | 1 1 1 1 | |1 1 1 1 |
  40. // | 1 -1 -1 1 | m = a[1][0] / a[0][0] = 1/1 => m = 1 e zera a[1][0] ficando |0 -1 -1 1|
  41. // | 2 2 2 3 | | ... |
  42.  
  43. for(j = k + 1; j < c; j++){
  44. a[i][j] = a[i][j] - (m * a[k][j]); // a[1][1] = a[1][1] - (m * a[0][1])
  45. M2[j] = M2[j] - (m * M2[k]); // M2[1] = M2[1] - (m * M2[0])
  46. //a[i][c-1] = M2[i] - (m * M2[k]);
  47. }
  48.  
  49. imprimeMatriz(a); //imprime a matriz a cada etapa realizada
  50. printf("\n\n");
  51. }
  52. }
  53.  
  54. imprimeResultados(a); //chama a funcao de imprimir os resultados da variável x
  55.  
  56. }
  57.  
  58. void imprimeResultados(double a[l][c]){
  59. int i, j, k;
  60. double x[l], s;
  61.  
  62. x[l-1] = a[l-1][c-1]/ a[l-1][l-1]; //calcula o valor da variavel x[l-1] (ultima linha da matriz) e salva no vetor
  63.  
  64. printf("Resolucao do sistema: \n\n");
  65.  
  66. for(k = l - 1; k >= 0; k--){ //essa funcao tem como objetivo calcular o valor das outras variaveis entre x[l-2] a x[0]
  67. s = 0;
  68. for(j= k + 1; j < l; j++){
  69. s = s + a[k][j] * x[j];
  70. x[k] = ((a[k][j + 1] - s)/(a[k][k])); //calcula e armazena o valor da variavel x[i] (x0,x1, etc..) no seu respectivo
  71. } //lugar 'i' no vetor x
  72. }
  73.  
  74.  
  75. for(i=0;i<l;i++){
  76. printf("x%d = %lf\n",i,x[i]); //imprime o valor das variaveis
  77. }
  78. printf("\n\n");
  79. }
  80.  
  81. void imprimeMatriz(double a[l][c]){
  82. int i,j;
  83.  
  84. for(i=0;i<l;i++){ //imprime a matriz
  85. printf("\n");
  86. for(j=0;j<c;j++){
  87. printf("%lf ",a[i][j]);
  88. }
  89. }
  90. }
  91.  
  92. int main()
  93. {
  94. preencheMatriz(); //chama a funcao de preencher a matriz
  95. return(EXIT_SUCCESS);
  96. printf("\n\n");
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement