Escreva um programa em Python para encontrar a raiz da funçāo f(x)=x^{3}-2 x^{2}+4 x-8 no intervalo [1,3] usando o método da falsa posiçāo. Apresente o erro relativo em cada iteraçāo e pare quando o erro for inferior a 1 \times 10^{-6}. Utilize o valor x=1.89882945773481 como referência para calcular o erro relativo.
Passo 1
O enunciado pede para encontrar a raiz da função
f(x)=x^{3}-2x^{2}+4x-8
no intervalo [1,3] usando o método da falsa posição (regula falsi). Precisamos também calcular o erro relativo a cada iteração em relação ao valor de referência x_{\text{ref}}=1.89882945773481 e parar quando esse erro for menor que 10^{-6}.
Passo 2
Vamos definir em Python:
A função f(x).
Os pontos iniciais a=1 e b=3.
O valor de referência x_{\text{ref}}=1.89882945773481.
O critério de parada \varepsilon=10^{-6}.
Passo 3
Verificamos a condição de existência de raiz em [a,b]. Ou seja, precisamos de
f(a)\,f(b)<0.
Passo 4
No método da falsa posição, a cada iteração calculamos o ponto
c = b \;-\;\frac{f(b)\,(a - b)}{f(a) - f(b)}.
Em seguida verificamos em qual subintervalo a raiz permanece:
Se f(a)\,f\text{(c)}<0, então a raiz está em [a,c], fazemos b=c.
Imprimimos esse valor e paramos quando \text{erro}<10^{-6}.
Resposta
deff(x):
return x**3 - 2*x**\(2+4\)*x - 8# Dados iniciais
a \(=1.0\)
b \(=3.0 x_ref =1.89882945773481\)
epsilon \(=1\)e-6# Verificação inicialif f(a) * f(b) >\(=0\):
raise ValueError("f(a) e f(b) devem ter sinais opostos.")
# Iteração do método da falsa posição
erro \(=1.0\)
iteracao \(=0\)
print("Iteração | c | Erro relativo")
print("---------------------------------------")
while erro > epsilon:
# calcula o ponto de falsa posição
c = b - f(b) * (a - b) / (f(a) - f(b))
# calcula o erro relativo
erro = abs((c - \(x_ref\)) / \(x_ref\))
iteracao \(+=1\)
print(f"{iteracao:9d} | {c:13.10f} | {erro:.2e}")
# atualiza o intervaloif f(a) * f\text{(c)} < 0:
b = c
else:
a = c
print("
Raiz aproximada:", c)