Um sistema linear é um conjunto de equações lineares com as mesmas variáveis. Sua solução consiste em encontrar valores para as variáveis que satisfaçam todas as equações simultaneamente.
A solução desse sistema é x = 2
e y = 1
, pois substituindo esses valores nas duas equações, ambas são verdadeiras.
Solucionando com C++:
#include <iostream>
#include <cmath>
auto solve = [](double a1, double b1, double c1,
double a2, double b2, double c2,
double &x, double &y) -> void {
// Calculando o determinante
double det = a1 * b2 - a2 * b1;
if(std::abs(det) < 1e-10){
std::cout << "Sistema não tem solução única (determinante zero).\n";
return;
}
// Aplicando a regra de Cramer
x = (c1 * b2 - c2 * b1) / det;
y = (a1 * c2 - a2 * c1) / det;
};
int main(){
double a1 = 2, b1 = 1, c1 = 5; // Equação 1: a1*x + b1*y = c1
double a2 = 1, b2 = -1, c2 = 1; // Equação 2: a2*x + b2*y = c2
double x, y;
solve(a1, b1, c1, a2, b2, c2, x, y);
std::cout << "x = " << x << '\n';
std::cout << "y = " << y << '\n';
}
Você também poderia resolver manualmente somando as duas equações:
2x + y = 5
x - y = 1
---------
3x = 6 => x = 2
Substituindo x=2 na segunda equação:
2 - y = 1 => y = 1
Mas a implementação em C++ apresentada é mais geral e pode ser usada para qualquer sistema linear
2x2
.
Podemos escrever um sistema linear na forma matricial A • X = B
, onde:
A
= Matriz dos coeficientesX
= Vetor das variáveisB
= Vetor dos termos independentesExemplo:
O sistema desse Exemplo 01 pode ser escrito como:
x
: x = 1 + y
2(1 + y) + y = 5
2 + 2y + y = 5
3y = 3
y = 1
y = 1
em x = 1 + y
: x = 2
Solução: (2, 1).
Consiste em somar ou subtrair as equações para eliminar uma variável.
(2x + y) + (x - y) = 5 + 1
3x = 6
x = 2
2 - y = 1
y = 1
Solução: (2, 1).
Para usar o Método de Cramer você precisa entender: Determinantes.
D ≠ 0
.Resolver esse sistema linear com C++:
Solução:
#include <iostream>
#include <cmath>
auto solve = [](double a1, double b1, double c1,
double a2, double b2, double c2,
double &x, double &y) -> void {
double det = a1 * b2 - a2 * b1;
if (std::abs(det) < 1e-10) {
std::cout << "Sistema não tem solução única (determinante zero).\n";
return;
}
x = (c1 * b2 - c2 * b1) / det;
y = (a1 * c2 - a2 * c1) / det;
};
int main() {
// Sistema:
// 3x - y = 7
// x + 2y = 0
double a1 = 3, b1 = -1, c1 = 7;
double a2 = 1, b2 = 2, c2 = 0;
double x, y;
solve(a1, b1, c1, a2, b2, c2, x, y);
std::cout << "x = " << x << '\n';
std::cout << "y = " << y << '\n';
}
x = (5 - t) / 2
y = t
PDFs:
Sites: