REGRA DE CRAMMER


  Para resolvermos sistemas complexos, podemos utilizar a regra de Crammer. Mas afinal, como funciona a regra de Crammer?

Dado o sistema:

2x - y = 14
x + 2y = -3

achar x e y.

  Você pode fazer o método de substituições e facilmente achar que x = 5 e y = -4. Porém, se o sistema tiver umas 15 incógnitas, vai dar uma enorme dor de cabeça!
  Vamos resolver este sistema pela regra de Crammer!!
  A matriz do sistema é a seguinte:

| 2  -1  14 |  Isto é, | x1 y1 r1 |
| 1   2  -3 |          | x2 y2 r2 |


  A resposta de x e y encontra-se, achando:

x = Detx / Det
y = Dety / Det

  Primeiro passo é achar o determinante Det. Para isto, eliminamos a coluna das respostas da matriz e a matriz fica:

| 2  -1 |
| 1   2 |

Det = 2*2 - (-1*1) = 4 + 1 = 5

  Em seguida, calcularemos o determinante Detx. Para isto, eliminamos a coluna do coeficiente x e colocaremos a coluna de respostas em seu lugar:

| 14 -1 |
| -3  2 |

Detx = 28 - 3 = 25

Logo, x = 25/5 = 5

  Por fim, acharemos Dety, eliminando a coluna do coeficiente y e colocando a coluna de respostas em seu lugar:

| 2  14 |
| 1  -3 |


Dety = -6 - 14 = -20

y = -20/5 = -4


  Utilidade da Regra de Crammer

  Se desejarmos calcular a matriz inversa de uma matriz, devemos fazer:

  A . A-1 = I

  I é a matriz identidade, onde tem valor 1 quando i=j e 0 quando i<>j.

  Exemplo: Calcular a matriz inversa.

| 2  2 |
| 3  1 |


  Solução:

| 2  2 |   | a  b |   | 1 0 |
| 3  1 | . | c  d | = | 0 1 |


| 2a+2c  2b+2d |   | 1 0 |
| 3a+1c  3b+1d | = | 0 1 |

2a+2c = 1

2b+2d = 0
3a+c = 0
3b+d = 1

  Resposta:

| -1/4   1/2 |
|  3/4  -1/2 |


  Matriz do sistema:

| 2  0  2  0  1 |
| 0  2  0  2  0 |
| 3  0  1  0  0 |
| 0  3  0  1  1 |



Algoritmo em C para a regra de Crammer - 2 sistemas 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


|/MARMSX/CURSOS/C--