Equação quadrática (ax² + bx + c=0)

A partir da explicação teórica disponível em RapidTables, ou outra bibliografia que você queira, elabore um programa em Fortran para solucionar as raízes da equação dados os coeficientes a, b, c.

Fonte: Quadratic equation (ax² + bx + c=0) – RapidTables.com

! Fazer um program para para encontrar as raizes de uma equação de segundo grau.
! Use a fórmula de bhaskara.
!
! Requisitos:
! Dizer quantas e que tipo são as raízes da equação quadrática.
! 
! delta = b**2 - 4*a*c
!
! delta > 0 2 raízes reais: 
!           x1 = (-b + sqrt(delta) ) / 2*a
!           x2 = (-b - sqrt(delta) ) / 2*a
! delta = 0 1 raiz x1 = x2 = -b / 2a
! delta > 0 não há raízes reais. Há 2 raízes complexas: 
!           x1 = (-b + i*sqrt(delta) ) / 2*a
!           x2 = (-b - i*sqrt(delta) ) / 2*a
! --------------------------------------------------------------------------

program bhaskara
implicit none

real :: a,b,c, delta, x1, x2

print*, "=================================="
print*, " Solver para a equacao quadratica"
print*, "----------------------------------"
print*, " ax^2 + bx + c = 0"
print*, "__________________________________"
print*, " "
read *, a,b,c

! Calculando o delta
delta = b**2 - 4*a*c

! Verificando o delta. Só calcula as raízes se delta não for negativo 
if (delta .le. 0) then
 x1 = (-b + sqrt(delta) ) / 2*a 
 x2 = (-b - sqrt(delta) ) / 2*a 
endif 

if (delta .gt. 0 ) then
 print*, "2 raizes reais"
 print*, "Delta = ", delta
 print*, "x1 = ", x1
 print*, "x2 = ", x2
else if (delta .lt. 0) then
 print*, "2 Raizes complexas"
 print*, "Delta = ", delta
else ! se não for nenhuma das condições anteriores
 print*, "As duas raizes são iguais."
 print*, "Delta = ", delta
 print*, "x1 = x2 = ", x1
endif

end program bhaskara


Análise gráfica:
Ferramenta: https://try.jupyter.org/

%matplotlib notebook
import numpy as np
import matplotlib
from matplotlib import pyplot as plt

# 3x2+5x+2 = 0 
# 3x2-6x+3 = 0
# x2+2x+5 = 0
a = 1
b = -5
c = 6
lista = [(a*x**2+b*x+c) for x in np.arange(-1,6,0.1)]
x = np.arange(-1,6,0.1)
plt.figure()
plt.grid()
plt.title('Função quadrática')
plt.text(4,11,r'$ax^2+bx+c$',fontsize=18)
plt.ylabel('$y(x)$')
plt.xlabel('$x$')
plt.plot(x,lista)

plt.annotate(r'$x_1$', xy=(2., 0.), xytext=(2.5, 2.5),
            arrowprops=dict(facecolor='red', shrink=0.05),
            )
plt.annotate(r'$x_2$', xy=(3., 0.), xytext=(2.5, -1.7),
            arrowprops=dict(facecolor='orange', shrink=0.05),
            )
plt.show()

Resultado:

imagem função quadrática

Avatar de zrhans

Posted by

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Site criado com WordPress.com.

%d blogueiros gostam disto: