19 set 2017

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

Leave a Reply