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:
Deixe um comentário