newton

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (379 palavras )
  • Download(s) : 0
  • Publicado : 27 de novembro de 2014
Ler documento completo
Amostra do texto
function xk = quase_newton(fn,x0,tol)

syms alfa real;
var = symvar(fn);

H0 = eye(length(x0));
g = gradient (fn);

%B = x0 + alfa*dk;
%dfa =diff(hk);
%raizes = double(solve(dfa));
%xk = xk + ak*dk;
xk=1;
xk_old=0;
n=0;
ak=1;
while abs(xk - xk_old)>tol
if n==0
xk=x0;
Hk=H0;gk_old=0;
Hk_old=0;
end
deltak = xk - xk_old;
xk_old = xk;
gk = subs(g,var,xk.');
gamak = gk - gk_old;Hk = Hk_old - (Hk_old*gamak*gamak'*Hk_old)/(gamak'*Hk_old*gamak) + (deltak*deltak')/(deltak'*gamak);
dk = -1*Hk*gk;
B = xk + alfa*dk;

hk = subs(fn,var,B.');dfa = diff(hk);
raizes = double(solve(dfa));

d2fa = double(subs(diff(dfa),raizes.'));

for i = 1:length(d2fa)
if d2kh(i)> 0 && raizes(i) == min(raizes) %ak é o minimo das raízes da primeira derivada que possui derivada segunda positiva
ak = raizes(i) ;
end
end

xk = xk + ak*dk;
n=n+1;Hk_old = Hk;
gk_old = gk;
end



maximizado vem do produto indicado acima:
volume = f(x) = (297 − 2x)(210 − 2x)x = 4x3 − 1014x2 + 62370x
Estafun¸c˜ao objetivo ´e polinomial, uma par´abola c´ubica. ´E relativamente
simples tra¸car o seu gr´afico, at´e mesmo sem aux´ılio computacional. Usando
o GNUPLOT chegar´ıamos `a figura 2.2.
0
1e+06
2e+063e+06
4e+06
0 50 100 150 200
4x3 − 1014x2 + 62370x
Figura 2.2: Volume da caixa aberta em fun¸c˜ao de x
Uma simples inspe¸c˜ao visual permite identificar o m´aximo: x∗ ≈ 45 correspondendo
a V ∗ =f∗ ≈ 106. Existe tamb´em um m´ınimo, em x ≈ 130,
mas n˜ao tem sentido um valor de x maior do que a metade de uma das dimens
˜oes do papel. A solu¸c˜ao anal´ıtica tamb´em ´e simples, afinal esta...
tracking img