Skip to content

Instantly share code, notes, and snippets.

@dangpzanco
Last active September 12, 2016 01:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dangpzanco/bb28d4df35ec0ea59e11af9b0a6dc2f9 to your computer and use it in GitHub Desktop.
Save dangpzanco/bb28d4df35ec0ea59e11af9b0a6dc2f9 to your computer and use it in GitHub Desktop.
clc % limpa a linha de comando
close all % fecha os graficos (se tiver)
clear all % limpa as variáveis
f = @(x) 2*x*cos(2*x) - (x-2)^2; % função de interesse
x = [3, 2]; % intervalo de interesse
% critérios de parada
num_iters = 100; % número de iterações
epsilon = 1e-5; % tolerância de convergência
p0 = x(2);
p1 = x(1);
P = zeros(num_iters+1, 2);
P(1,:) = [p0 p1]; % se der erro trocar por [p0; p1]
% começa o loop
for i=1:num_iters
fp1 = f(p1); % guardar o valor para não calcular duas vezes
p2 = p1 - fp1*(p1-p0)/(fp1 - f(p0)); % calcular p2
% atualizar p0 e p1 (recomeçar)
p0 = p1;
p1 = p2;
% testar se chegou no nível de tolerância
intervalo = abs(p1 - p0);
if intervalo < epsilon
break % termina o loop
end
% guarda intervalos
P(i+1,:) = [p0 p1];
end
p2
plot(P)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment