// Monografia de Analisis Numerico
// Proyecto FONDEF D05I-10211
// Autor: Axel Osses, 2009  
// Herramientas para la formacin de profesores
// Prohibida la reproduccin parcial o total de este software
//
// Comparacion de los metodo de Biseccion,
// Newton-Raphson y secante para aproximar la
// raiz cuadrada de M (Capitulo 3)

M=2;
printf('\nAproximacion de raiz de %d\n\n',M);
printf('  n    biseccion  Newton     secante\n');
//numero de iteraciones
for niter=[1:4,5:5:20]
// Funcion f(x)=x^2-M
//Metodo de biseccion
a0=1; b0=M;
a=a0; b=b0;
for i=1:niter
  c=(a+b)/2;
  if c^2>M then 
    b=c;
  else
    a=c;
  end
end
raiz_biseccion=c;

//Metodo de Newton-Raphson
x0=1; xn=x0;
for i=1:niter
  xp=1/2*(xn+M/xn);
  xn=xp;
end
raiz_Newton=xp;

//Metodo de la secante
x0=1; x1=M;
xn=x0;xnn=x1;
for i=1:niter
  xp=(xn*xnn+M)/(xn+xnn);
  xnn=xn;
  xn=xp;
end
raiz_secante=xp;

printf('%4d %10f %10f %10f\n',niter,raiz_biseccion,raiz_Newton,raiz_secante);
end

printf('Raiz exacta es %f\n',sqrt(M));

