Escreva o algoritmo respectivo a cada um dos métodos iterativos de obtenção de zeros de funções: Bisseção; Ponto fixo e Newton-Raphson.
Passo 1
O enunciado pede que a gente escreva o pseudocódigo dos três métodos iterativos de busca de raiz de uma função
:
– Método da Bisseção
– Método do Ponto Fixo
– Método de Newton–Raphson
Para cada um, vamos explicitar as entradas (função, chute(s), tolerância e número máximo de iterações) e o critério de parada baseado na diferença entre iterações ou no tamanho do intervalo.
– Método da Bisseção
– Método do Ponto Fixo
– Método de Newton–Raphson
Para cada um, vamos explicitar as entradas (função, chute(s), tolerância e número máximo de iterações) e o critério de parada baseado na diferença entre iterações ou no tamanho do intervalo.
Passo 2
Construímos o algoritmo da Bisseção que explora o teorema do valor médio: se
e
têm sinal oposto, existe raiz em
. A cada iteração dividimos o intervalo ao meio e escolhemos o subintervalo que contém a raiz até que o tamanho do intervalo seja menor que a tolerância.
Passo 3
Montamos o algoritmo de Ponto Fixo. Primeiro reescrevemos
na forma
. A iteração é
. O critério de parada é
ou atingir o número máximo de iterações.
Passo 4
Desenvolvemos o algoritmo de Newton–Raphson, que usa a aproximação linear de
em torno de
. A fórmula iterativa é
O critério de parada é
ou número máximo de iterações.
Resposta
A seguir o pseudocódigo de cada método.
Método da Bisseção
Entrada: função \(f\), extremos \(a,b\) com \(f(a) \cdot f(b) < 0\), tolerância \(\text{tol}\), \(\text{Nmax}\)
Saída: aproximação da raiz \(c\)
\(1.\) if \(f(a) \cdot f(b) \geq 0\) then
\(2.\) erro "Intervalo inválido"
\(3.\) end if
\(4.\) for \(k\) from \(1\) to \(\text{Nmax}\) do
\(5.\) c \leftarrow \frac{a + b}{2}. if \frac{|b - a|}{2} < \text{tol} then
\(7.\) return \(c\)
\(8.\) end if
\(9.\) if \(f(a) \cdot f\text{(c)} < 0\) then
\(10.\) b \leftarrow c
\(11.\) else
\(12.\) a \leftarrow c
\(13.\) end if
\(14.\) end for
\(15.\) return \(c\)
Método do Ponto Fixo
Entrada: função \(g\) (tal que \(x = g(x)\)), chute inicial \(x_0\), tolerância \(\text{tol}\), \(\text{Nmax}\)
Saída: aproximação da raiz \(x\)
\(1.\) \(x \leftarrow x_0\)
\(2.\) for \(k\) from \(1\) to \(\text{Nmax}\) do
\(3.\) \(x_{\text{new}} \leftarrow g(x)\)
\(4.\) if \(|x_{\text{new}} - x| < \text{tol}\) then
\(5.\) return \(x_{\text{new}}\)
\(6.\) end if
\(7.\) \(x \leftarrow x_{\text{new}}\)
\(8.\) end for
\(9.\) return \(x\)
Método de Newton–Raphson
Entrada: função \(f\), derivada \(f'\), chute inicial \(x_0\), tolerância \(\text{tol}\), \(\text{Nmax}\)
Saída: aproximação da raiz \(x\)
\(1.\) \(x \leftarrow x_0\)
\(2.\) for \(k\) from \(1\) to \(\text{Nmax}\) do
\(3.\) if \(f'(x) = 0\) then
\(4.\) erro "Derivada zero"
\(5.\) end if
\(6.\) \(x_{\text{new}} \leftarrow x - \frac{f(x)}{f'(x)}\)
\(7.\) if \(|x_{\text{new}} - x| < \text{tol}\) then
\(8.\) return \(x_{\text{new}}\)
\(9.\) end if
\(10.\) \(x \leftarrow x_{\text{new}}\)
\(11.\) end for
\(12.\) return \(x\)