Lista de Exercícios 1#

Solucionário matemático e computacional de exercícios selecionados da Lista de Exercícios 1.

Exercícios computacionais#

Q#

Considere a função quadrática \(f(x) = x^2 - 100.0001 + 0.01\):

a) Implemente a fórmula de Bhaskara para calcular suas raízes

b) Racionalize a fórmula de Bhaskara para a solução \(x_2\) (multiplique por \(\frac{-b + \sqrt{\Delta}}{-b + \sqrt{\Delta}}\)) e refaça o cálculo para \(x_2\).

c) Compare os resultados para \(x_2\).

S#

from math import sqrt

# a)

# fórmula de Bhaskara 
a, b, c = 1, -100.0001, 0.01
Delta = b**2 - 4*a*c

# raízes
x1 = (- b + sqrt(Delta))/2*a
x2 = (- b - sqrt(Delta))/2*a

print('x1 = {0}'.format(x1))
print('x2 = {0}'.format(x2))

# b)

# Racionalizando, obtemos 

x2b = 2*c/(-b + sqrt(Delta))
print('x2b = {0}'.format(x2b))


# c) 

"""
Discussão: o valor calculado em b) possui um erro de arredondamento. 
           Como b < 0, o numerador envolve a subtração de
           dois números quase iguais (erro de cancelamento)
           e isto afeta o resultado. 
           
           Com a racionalização da expressão, obtemos uma fórmula
           menos propensa a erros. 
"""
b2 = sqrt(Delta)
print(b2)
print('Diferença no numerador: ' + str(-b - b2))
print('Erro absoluto na solução: ' + str(abs(x2 - x2b)))
x1 = 100.0
x2 = 0.00010000000000331966
x2b = 0.0001
99.9999
Diferença no numerador: 0.0002000000000066393
Erro absoluto na solução: 3.3196508692975857e-15