Como Calcular Equação do 2º Grau (Bhaskara) no PHP [Código]

💡 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:

Veja também: