Se x é uma estimativa para a raiz cúbica de y, então:
é uma estimativa melhor. Utilize esta assertiva para implementar uma função rcubica() que retorna a raiz cúbica de um dado número.
Passo 1
O enunciado pede para encontrar a raiz cúbica de um número y usando o método iterativo em que, dada uma estimativa x, uma estimativa melhor é dada por z =
. Vamos implementar uma função rcubica() que aplica essa iteração até convergir.
Escolhemos um palpite inicial x. Uma escolha comum é x = y se y ≥ 1, ou x = 1.0 caso contrário (para evitar divisão por zero ou palpite muito pequeno).
Definimos um critério de parada baseado em uma tolerância tol: enquanto a diferença entre a nova estimativa z e a antiga x for maior que tol, substituímos x por z e repetimos.
Ao final, retornamos x como aproximação da raiz cúbica de y.
Implementamos a função em Python usando essas ideias, cuidando de y = 0 como caso especial e limitando o número máximo de iterações para garantir que o loop termine.
Escolhemos um palpite inicial x. Uma escolha comum é x = y se y ≥ 1, ou x = 1.0 caso contrário (para evitar divisão por zero ou palpite muito pequeno).
Definimos um critério de parada baseado em uma tolerância tol: enquanto a diferença entre a nova estimativa z e a antiga x for maior que tol, substituímos x por z e repetimos.
Ao final, retornamos x como aproximação da raiz cúbica de y.
Implementamos a função em Python usando essas ideias, cuidando de y = 0 como caso especial e limitando o número máximo de iterações para garantir que o loop termine.
Resposta
def rcubica(y, tol=1e-12, max_iter=1000):
# Caso especial
if y == 0:
return 0.0
# Palpite inicial
x = y if abs(y) >= 1.0 else 1.0
for _ in range(max_iter):
# Fórmula de iteração: z = (2x + y/x^2) / 3
z = (2.0 * x + y / (x * x)) / 3.0
# Verifica convergência pelo salto na estimativa
if abs(z - x) < tol:
return z
x = z
# Se não convergir dentro de max_iter, retorna a melhor estimativa
return x