// Mat01169 - Estudo de Caso - distancia entre duas trajetorias
// http://www.mat.ufrgs.br/~carvalho/mat01169/dist_curvas/
// JBC, Set 2013
// USO: EXECUTE esse arquivo em Scilab (Arquivo -> Executar)
//
// funcoes auxiliares
function vu=F(vx)         // F
 x=vx(1);y=vx(2);
 vu=[x-y+2*x**3-2*x*log(y);  // sem espacos 
     x*y-y*y+x*x-log(y)];
endfunction
//
function J=JF(vx)         // JF - a jacobiana
 x=vx(1);y=vx(2);
 J=[1+6*x*x-2*log(y), -1-2*x/y;// sem espacos entre os 
    y+2*x    ,  x-2*y-1/y];    // elementos da matriz
endfunction
//
disp('MAT01169 - distancia entre duas trajetorias, Set 2013')
// Metodo de Newton
k=0;xk=[0.5;1.0];[k xk'] // aprox inicial para solucao
segue=1;
while (segue==1)
  k=k+1; zk = JF(xk)\F(xk); // resolve sistema linear
  xk=xk-zk;[k xk']          // atualiza e imprime
  if (norm(zk)/norm(xk) < 1E-12) // criterio de parada
     segue=0;   // interrompe o laco
  end
end
disp('distancia encontrada:')
x=xk(1); y=xk(2); // resgata solucao (x,y)
dist = sqrt( (x-y)**2 + (x*x-log(y))**2 )
////////////////////////////////////////////////////////
