Octave - Calcular raiz pelo método da Secante
Publicado por Daniel Moreira dos Santos (última atualização em 15/07/2010)
[ Hits: 19.853 ]
Homepage: http://www.danielmoreira.wordpress.com
Em análise numérica, o método das secantes é um algoritmo de busca de raízes que usa uma sequência de raízes de linhas secantes para aproximar cada vez melhor a raiz de uma função f.
function [Raiz,Iter,Erro] = Secante(funcao,a,b,Toler,IterMax);
%parametros de entrada: funcao,a,b,Toler,IterMax,Exibe -> funcao, lim. intervalo,
%tolerancia e num. max de iteracoes, resultados intermediarios devem ser
%exibidos??
%parametros de saida: Raiz,Iter,Erro -> raiz, numero gasto de iteracoes e
%condicao de erro
x = a;
Fa = eval(funcao);
x = b;
Fb = eval(funcao);
%visualizacao da funcao
Ft =[];
lim =15;
for x=-lim/3:0.1:lim
Ft =[Ft;eval(funcao)];
end
x = -lim/3:0.1:lim;
figure(1);
plot(x,Ft,'b');
hold on;
plot(x,zeros(size(x,2)),'k');
grid;
plot([a b],[Fa Fb],'k*');
xlabel('Eixo x');
ylabel('Eixo y');
title(funcao);
pause;
if abs(Fa) < abs(Fb)
t = a;
a = b;
b = t;
t = Fa;
Fa = Fb;
Fb = t;
end
disp('Calculo de raiz de equacao pelo metodo da secante')
disp('iter a b x Fx deltaX')
Iter = 0;
x = b;
Fx = Fb;
while 1
DeltaX = -Fx/(Fb-Fa)*(b-a);
x = x+DeltaX;
Fx = eval(funcao);
hold on;
plot(x,Fx,'r*');
drawnow;
pause;
disp ([Iter a b x Fx DeltaX]);
if(abs(DeltaX)<Toler && abs(Fx)<Toler)||Iter >=IterMax
break;
end
a = b;
Fa = Fb;
b = x;
Fb = Fx;
Iter = Iter+1;
end
Raiz = x;
if abs(DeltaX)<Toler && abs(Fx)<Toler
Erro = 0;
else
Erro = 1;
end
end
Octave - Calcular raiz pelo método de Newton
Cálculo da raiz de uma função pelo Método da Bisseção - Octave
Função Fatorial Recursiva em Fortran 95
Octave - Método de Euler-Melhorado para solução de EDO
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Trazendo de volta o Serviços em Segundo Plano no Plasma6









