Pesquisa a respeito do Método da Secante e crie uma função no Matlab para determinar a raiz de função por este método.
Passo 1
Então, o exercício pede pra gente pesquisar o Método da Secante e criar uma função no Matlab que ache a raiz de uma função usando esse método. Isso cai em Técnicas de Resolução Numérica de Equações Não Lineares. Pra resolver a gente vai precisar:
- Entender a ideia do método da secante (aproximação da derivada pela diferença finita).
- Saber escrever funções em Matlab e usar loops para iterar até a tolerância desejada.
Passo 2
Bora entender a teoria: o Método da Secante gera uma sequência de valores
que converge para a raiz de
. Ao invés de usar a derivada (como no Newton), a gente aproxima a derivada por:
Daí a fórmula de iteração fica
A gente precisa de dois chutes iniciais
e
, uma tolerância
pra parar o loop, e um número máximo de iterações
.
Passo 3
Agora, o algoritmo em alto nível:
- Definir
e . - Calcular
e . - Para
até :
a) Calcularb) Se , interrompe e retorna .
c) Atualiza, e . - Se passar de
, avisa que não convergiu.
Resposta
function [root, iter] = secante(func, x0, x1, tol, maxiter)
% SECANTE Encontra raiz de f(x)=0 pelo Método da Secante
% [root, iter] = secante(func, x0, x1, tol, maxiter)
% func - handle da função (ex: @(x) x^2-2)
% x0, x1 - chutes iniciais
% tol - tolerância de convergência
% maxiter - número máximo de iterações
%
% root - estimativa da raiz
% iter - número de iterações usadas
f0 = func(x0);
f1 = func(x1);
for iter = 1:maxiter
% calcular novo ponto pela fórmula da secante
x2 = x1 - f1*(x1 - x0)/(f1 - f0);
% checar convergência
if abs(x2 - x1) < tol
root = x2;
return
end
% atualizar valores para próxima iteração
x0 = x1; f0 = f1;
x1 = x2; f1 = func(x1);
end
% se chegar aqui, não convergiu no maxiter
warning('Método da Secante não convergiu em %d iterações.', maxiter);
root = x2;
end