 
// Mat01323 - Introducao a Otimizacao - 2013/2
// Metodo do Ajuste Quadratico para Otimizacao na Reta
 
function [ak,ck,bk,uk,vk,zk]=p_aquad(ak,ck,bk,uk,vk,zk)
// Implementa algoritmo do ajuste quadratico
//
dk=uk*(ck-bk) + vk*(bk-ak) + zk*(ak-ck); // denominador
sk=(uk*(ck*ck-bk*bk) + vk*(bk*bk-ak*ak) + zk*(ak*ak-ck*ck))/(2*dk);
  wk = f(sk);                // avalia a f
  //
 if (sk > ck)
      // 
   if (wk >= vk)
      bk=sk; zk=wk;  // P5
   else
      ak=ck;ck=sk; uk=vk;vk=wk; // P6
   end
 elseif (sk < ck)
   if (wk >= vk)
      ak=sk; uk=wk;  // P7
   else
      bk=ck;ck=sk; zk=vk;vk=wk; // P8
   end
 else
   ak= (ak+ck)/2; bk=(ck+bk)/2; // P9
   uk= f( ak ); zk= f(bk);
 end
endfunction
 
