💡 O que você vai aprender nesta aula:
- Como traduzir a Fórmula de Bhaskara para a linguagem PHP.
- O uso da função matemática nativa
sqrt()para raízes quadradas. - Como tratar os três cenários do Delta (Positivo, Zero e Negativo).
- Como concatenar strings para exibir raízes imaginárias (Números Complexos).
Um dos grandes poderes da programação é a capacidade de resolver cálculos matemáticos complexos em frações de segundo. Nosso desafio final de hoje é criar uma calculadora de raízes para equações do segundo grau na forma $ax^2+bx+c=0$.
Como resolver uma Equação do 2º Grau no PHP?
Para resolver uma equação do segundo grau no PHP, precisamos calcular o valor de Delta ($\Delta=b^2-4ac$) e, em seguida, aplicar a função sqrt() dentro da Fórmula de Bhaskara para encontrar as raízes reais ou imaginárias.
A fórmula matemática universal que vamos traduzir para o código é esta:
$$x=\frac{-b\pm\sqrt{\Delta}}{2a}$$O triângulo é a letra grega Delta ($\Delta$). O valor numérico dele é o que dita as "regras do jogo" na nossa estrutura de IF e ELSE. O comportamento gráfico dessas raízes pode ser visto no cruzamento da parábola com o eixo X:
- Se $$\Delta > 0$$: Temos duas raízes reais e distintas (a parábola corta o eixo X em dois pontos).
- Se $$\Delta = 0$$: Temos apenas uma raiz real, ou duas raízes iguais (a parábola apenas toca o eixo X).
- Se $$\Delta < 0$$: Temos duas raízes imaginárias / complexas (a parábola "flutua" e não toca o eixo X).
Matemática + PHP deu nó na mente? 🤯
Traduzir fórmulas matemáticas complexas para o código exige uma Lógica de Programação afiada. Se você quer aprender a construir esses algoritmos sem travar, a Apostila PHP Progressivo é exatamente o que você precisa. Baixe agora e estude dezenas de exercícios resolvidos passo a passo, totalmente offline!
Quero Dominar a Lógica →Script PHP Completo: Calculando as Raízes
O primeiro passo do nosso script deve ser a consistência de dados. Em uma equação do segundo grau, o coeficiente $a$ nunca pode ser igual a 0 (zero), caso contrário, o $x^2$ é anulado e a equação passa a ser do 1º grau. Se o usuário digitar $a = 0$, o script encerra ali mesmo.
Para o caso em que o delta for negativo, as raízes serão imaginárias. Para não darmos um erro de matemática no PHP tentando extrair raiz de número negativo, usamos um truque: extraímos a raiz do delta positivo (multiplicado por -1) e então concatenamos com a letra i usando o ponto . no PHP.
<html>
<head>
<title>Calculadora de Equação do 2º Grau - PHP</title>
</head>
<body>
<h2>Calculadora de Bhaskara (ax² + bx + c = 0)</h2>
<form action="" method="get">
Coeficiente A: <input type="number" step="any" name="a" required /><br /><br />
Coeficiente B: <input type="number" step="any" name="b" required /><br /><br />
Coeficiente C: <input type="number" step="any" name="c" required /><br /><br />
<input type="submit" value="Calcular Raízes" />
</form>
<hr>
<?php
// Verifica se o formulário foi enviado
if(isset($_GET['a'], $_GET['b'], $_GET['c'])){
$a = $_GET['a'];
$b = $_GET['b'];
$c = $_GET['c'];
// Consistência: Se 'a' for 0, não é equação do 2º grau!
if($a != 0){
// Cálculo do Delta
$delta = ($b * $b) - (4 * $a * $c);
echo "<p>Valor de Delta: <b>$delta</b></p>";
// Cenário 1: Duas raízes reais diferentes
if($delta > 0){
$raiz1 = (-$b + sqrt($delta)) / (2 * $a);
$raiz2 = (-$b - sqrt($delta)) / (2 * $a);
echo "<h3 style='color:green;'>Raízes Reais e Distintas:</h3>";
echo "Raiz 1 (x'): <b>$raiz1</b> <br />";
echo "Raiz 2 (x''): <b>$raiz2</b>";
}
// Cenário 2: Duas raízes reais idênticas
elseif ($delta == 0){
$raiz = -$b / (2 * $a);
echo "<h3 style='color:blue;'>Raiz Real Única:</h3>";
echo "Raiz 1 e 2: <b>$raiz</b>";
}
// Cenário 3: Raízes Imaginárias (Complexas)
else {
$real = -$b / (2 * $a);
// Invertemos o sinal do Delta para conseguir extrair a raiz
$img = sqrt(-$delta) / (2 * $a);
$raiz1 = $real . " + " . $img . "i";
$raiz2 = $real . " - " . $img . "i";
echo "<h3 style='color:purple;'>Raízes Imaginárias (Complexas):</h3>";
echo "Raiz 1: <b>$raiz1</b> <br />";
echo "Raiz 2: <b>$raiz2</b>";
}
} else {
echo "<h3 style='color:red;'>Erro: O coeficiente 'a' não pode ser ZERO!</h3>";
}
}
?>
</body>
</html>
Nenhum comentário:
Postar um comentário