Instruções

Implementar o Método da Bissecção

O método da bissecção, também conhecido como método de busca binária, utiliza uma busca binária para encontrar as raízes de uma função de valor real. Funciona restringindo um intervalo onde a raiz quadrada se encontra até que converja para um valor dentro de uma tolerância especificada. Por exemplo, se a tolerância for 0.01, o método da bissecção continuará dividindo o intervalo pela metade até que a diferença entre os limites superior e inferior seja menor ou igual a 0.01. Neste laboratório, você implementará uma função que utiliza o método da bissecção para encontrar a raiz quadrada de um número. Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratório. Histórias de Usuário: 1. Você deve definir uma função chamada square_root_bisection com três parâmetros:
  • O número para o qual você deseja encontrar a raiz quadrada.
  • A tolerância é a margem de erro aceitável para o resultado. Você deve definir um valor padrão para a tolerância.
  • O número máximo de iterações a serem realizadas. Você deve definir um número padrão de iterações.
1. A função square_root_bisection deve:
  • Levante um ValueError com a mensagem Square root of negative number is not defined in real numbers se o número passado para a função for negativo.
  • Para os números 0 e 1, imprima a mensagem: The square root of [number] is [number] e retorne o próprio número como a raiz quadrada.
  • Para qualquer outro número positivo, imprima a raiz quadrada aproximada com a mensagem: The square root of [square_target] is approximately [root] e retorne o valor da raiz calculada.
  • Se nenhum valor atender à condição de tolerância, imprima uma mensagem de falha: Failed to converge within [maximum] iterations e retorne None.
Nota: Você não pode importar nenhum módulo para este laboratório.

O que fazer:

Testes:

  • Você não deve importar nenhum módulo.
  • Você deve ter uma função chamada `square_root_bisection`.
  • Sua função `square_root_bisection` deve ter três parâmetros.
  • Você deve definir um valor padrão para a **tolerância** e o número máximo de iterações.
  • Sua função `square_root_bisection` deve lançar um `ValueError` com a mensagem `Raiz quadrada de número negativo não está definida nos números reais` quando o número passado para a função for negativo.
  • `square_root_bisection(0)` deve retornar `0`.
  • `square_root_bisection(0)` deve imprimir `A raiz quadrada de 0 é 0`.
  • `square_root_bisection(0.001, 1e-7, 50)` deve retornar um número entre `0.03162267660168379` e `0.031622876601683794`.
  • `square_root_bisection(0.001, 1e-7, 50)` deve imprimir `A raiz quadrada de 0.001 é aproximadamente X`, onde `X` é um número entre `0.03162267660168379` e `0.031622876601683794`.
  • `square_root_bisection(0.25, 1e-7, 50)` deve retornar um número entre `0.4999999` e `0.5000001`.
  • `square_root_bisection(0.25, 1e-7, 50)` deve imprimir `A raiz quadrada de 0.25 é aproximadamente X`, onde `X` é um número entre `0.4999999` e `0.5000001`.
  • `square_root_bisection(1)` deve retornar `1`.
  • `square_root_bisection(1)` deve imprimir `A raiz quadrada de 1 é 1`.
  • `square_root_bisection(81, 1e-3, 50)` deve retornar um número entre `8.999` e `9.001`.
  • `square_root_bisection(81, 1e-3, 50)` deve imprimir `A raiz quadrada de 81 é aproximadamente X`, onde `X` é um número entre `8.999` e `9.001`.
  • `square_root_bisection(225, 1e-3, 100)` deve retornar um número entre `14.999` e `15.001`.
  • `square_root_bisection(225, 1e-3, 100)` deve imprimir `A raiz quadrada de 225 é aproximadamente X`, onde `X` é um número entre `14.999` e `15.001`.
  • `square_root_bisection(225, 1e-5, 100)` deve retornar um número entre `14.99999` e `15.00001`.
  • `square_root_bisection(225, 1e-5, 100)` deve imprimir `A raiz quadrada de 225 é aproximadamente X`, onde `X` é um número entre `14.99999` e `15.00001`.
  • `square_root_bisection(225, 1e-7, 100)` deve retornar um número entre `14.9999999` e `15.0000001`.
  • `square_root_bisection(225, 1e-7, 100)` deve imprimir `A raiz quadrada de 225 é aproximadamente X`, onde `X` é um número entre `14.9999999` e `15.0000001`.
  • `square_root_bisection(225, 1e-7, 10)` deve retornar `None`.
  • `square_root_bisection(225, 1e-7, 10)` deve imprimir `Falha ao convergir dentro de 10 iterações`.

Preview