Buscar

BissectionRoot

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

% Autor: Thiago PX
%
% Entradas
% - a e b definem o intervalo de busca [a,b].
% - MaxIt define o numero maximo de iteracoes do metodo.
% - TolMax define a precisao do metodo.
%
% Saídas
% - xns (solução)
function xns = BissectionRoot(f, a, b, TolMax, MaxIt)
 fa = f(a);
 fb = f(b);
 if fa*fb > 0
 disp('Erro: A função tem o mesmo sinal em a e b.');
 else
 disp('iteracao a b (xns) sol. f(a) f(xns) Tolerancia');
 for i = 1:MaxIt
 xns = (a + b)/2;
 toli = (b - a)/2;
 
 fa = f(a);
 fns = f(xns);
 fprintf('%5i %15.6f %11.6f %11.6f %11.6f %11.6f %11.6f\n', i, a, b, xns, fa, fns, toli);
 
 if fns == 0
 fprintf('Uma solucao exata x =%11.6f foi encontrada\n', xns);
 break;
 end
 
 if toli < TolMax
 break;
 end
 if i == MaxIt
 fprintf('Solucao não obtida apos %i iteracoes.\n', MaxIt);
 break;
 end
 
 if fa*fns < 0
 b = xns;
 else
 a = xns;
 end 
 end
 end
end

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais