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.