Otimização de processo
function [x,f] = newton(y,n) for k=1:1:n x(k)= y- (4*(y-1)^3)/(12*(y-1)^2); f(k)=(x(k)-1)^4; if(abs(x(k)-y) > 0.001) y=x(k); end end plot(x,f)
O gráfico da função monovariável em questão está representado na figura abaixo. Para x inicial igual a -1, utilizando 100 iterações encontramos um valor mínimo de 0.9986: O gráfico abaixo mostra o número de iterações em relação ao valor de x*.
Neste valor de x* igual a 0.9986 o valor da função objetivo é muito próximo a 0.
Para um valor inicial de x igual a -0.5 foi encontrado o valor ótimo de x* de 0.9985. Pode ser verificado que pouco foi alterado em relação ao exemplo anterior. O mesmo ocorreu quando estabelecemos o valor inicial de x em 0 para a procura do valor ótimo da função.
5.3 b) Para resolver este mesmo exercício utilizando o método de quase-newton foi empregada a rotina abaixo.
function [min, max,x,f] = quasinewton(min, max,n) close all for k=1:1:n x(k)= max- (4*(max-1)^3)/((4*(max-1)^3)-(4*(min-1)^3))/(max-min); if(max-abs(x(k)) > 0.0001) max=x(k); end end j=-100:1:100; f=(j-1).^4; plot (j,f, 'r','LineWidth',2) figure plot(x,'k','LineWidth',2)
Ao utilizar um valor inicial de -1 e valor máximo de 100 para 1000 iterações foi encontrado o valor de x* de 1.1191. O gráfico abaixo mostra a convergência do método para as 1000 iterações. No eixo y encontra-se o valor de x* e no eixo x o número de iterações.
Ao iniciar a procura em -0.5 o valor de x* encontrado foi de 1.081. Verifica-se que o método de quasi-newton é mais sensível aos valores de partida. O mesmo ocorreu quando substituímos o valor de partida para 0, sendo que o valor de x* encontrado foi de 1.047 (mais próximo do mínimo analítico).
5.5 1- Se iniciarmos a