Curso de C
Regra de Crammer


Você está em: MarMSX >> Cursos >> C   Para resolvermos sistemas de equações lineares complexos, podemos utilizar a Regra de Crammer. Mas afinal, como funciona a regra de Crammer?

  Seja A.x = b um sistema de n equações e n incógnitas, onde A é a matriz dos coeficientes das equações, x o vetor de incógnitas e b a coluna dos termos independentes.
  A solução do sistema para cada incógnita xi é dada por:
      |Ai|     Det(Ai)
 xi = ───── = ────────
       |A|     Det(A)
  Onde Ai é a matriz que se obtém da matriz A substituindo a coluna j pela coluna dos termos independentes de b.

  Veja o exemplo a seguir.
 2x - y = 14
 x + 2y = -3
  Achar os valores de x e y utilizando a Regra de Crammer.

  De acordo com o sistema de equações lineares apresentado, temos que:
 A = | 2 -1 |
     | 1  2 |

 x = | x |
     | y |

 B = | 14 |
     | -3 |

  Para a incógnita x, temos:
 A = | 2 -1 |
     | 1  2 |

Substituímos a coluna 1 (marcada) por b:

 A1  = | 14 -1 |
       | -3  2 |

  Dessa forma:
        | 14 -1 |
    det | -3  2 |     14 x 2 - (-3 x -1)     25
x = ────────────── =  ─────────────────── = ──── = 5
    det | 2 -1 |       2 x 2 - (1 x -1)       5
        | 1  2 |

  Para a incógnita y, temos:
 A = | 2 -1 |
     | 1  2 |

Substituímos a coluna 2 (marcada) por b:

 A2  = | 2 14 |
       | 1 -3 |

  Dessa forma:
        | 2 14 |
    det | 1 -3 |      2 x -3 - (1 x 14)     -20
y = ────────────── =  ─────────────────── = ──── = -4
    det | 2 -1 |       2 x 2 - (1 x -1)       5
        | 1  2 |



Algoritmo em C: Regra de Crammer para sistemas lineares com 2 equações e 2 incógnitas
#include <stdio.h>

void printMatrix(double A[2][3])
{
  for (int i=0; i<2; i++)
  {
    printf("| ");
    for (int j=0; j<3; j++)
      printf("%.2f ",A[i][j]);
    printf(" |\n");
  }
}

double detX(double A[2][3])
{
  return A[0][2] * A[1][1] - A[0][1] * A[1][2];
}

double detY(double A[2][3])
{
  return A[0][0] * A[1][2] - A[0][2] * A[1][0];
}

double det(double A[2][3])
{
  return A[0][0] * A[1][1] - A[0][1] * A[1][0];
}

void crammer(double A[2][3])
{
  double x = detX(A) / det(A);
  double y = detY(A) / det(A);

  printf("A solucao para o sistema:\n\n");
  printMatrix(A);
  printf("\né:\n\n");
  printf("x=%.2f\n",x);
  printf("y=%.2f\n",y);
}

int main(void)
{
  double A[2][3] = {{2, -1, 14}, {1, 2, -3}};

  crammer(A);

  return 1;
}
  Saída na tela:
A solucao para o sistema:

| 2.00 -1.00 14.00  |
| 1.00 2.00 -3.00  |

é:

x=5.00
y=-4.00



  Referências:

  [1] - Regra de Cramer, Wikipédia. Em: https://pt.wikipedia.org/wiki/Regra_de_Cramer.
  [2] - Fundamentos de Matemática 2, Gelson Iezzi et al. Editora Atual, 1981.


<< Anterior Linguagem C Próxima >>