function suite=newton(f,fprime,x0,n)
//   Calcule les n premiers iteres de la methode de Newton 
//   appliquee a la fonction f, de derivee fprime, a 
//   partir de x0. Represente graphiquement les iterations.

xbasc();
                         // definition de la fonction a iterer
deff("y=phi(x)","y=x-f(x)./fprime(x)");
suite = [x0];            // initialisation
for i=1:n,               // iterations
   suite = [suite,phi(suite($))];
end;
                         // echelles graphiques
xmin = min(suite); xmax = max(suite);
ysuite = f(suite);       
ymin = min(ysuite); ymax = max(ysuite);
                         // cadre graphique 
plotframe([xmin,ymin,xmax,ymax],[0,1,0,1],[%f,%f],..
     ["Iteres de la methode de Newton","x","f(x)"]);
                         // trace de la fonction f
x = linspace(xmin,xmax,100); y = f(x);
plot2d(x,y,1,"000");
                         // representation des iteres
x = suite.*.[1,1];       // abscisses
y = ysuite.*.[0,1];      // ordonnees
plot2d(x,y,2,"000");


function suite=secante(f,x0,x1,n)
//   Calcule les n premiers iteres de la methode de la secante 
//   appliquee a la fonction f, a partir de x0 et x1. 
//   Represente graphiquement les iterations.

xbasc();
                         // definition de la fonction a iterer
deff("y=phi(a,b)","y=b-(f(b)*(b-a))./(f(b)-f(a))");
suite = [x0,x1];         // initialisation
for i=1:n,               // iterations
   suite(i+2) = phi(suite(i),suite(i+1));
end;
                         // echelles graphiques
xmin = min(suite); xmax = max(suite);
ysuite = f(suite);       
ymin = min(ysuite); ymax = max(ysuite);
                         // cadre graphique 
plotframe([xmin,ymin,xmax,ymax],[0,1,0,1],[%f,%f],..
     ["Iteres de la methode de la secante","x","f(x)"]);
                         // trace de la fonction f
x = linspace(xmin,xmax,100); y = f(x);
plot2d(x,y,1,"000");
                         // representation des iteres
x = [suite([1:n]);suite([3:(n+2)])];  // abscisses
y = [ysuite([1:n]);zeros(1,n)];   // ordonnees
plot2d(x,y,2*ones(1,n),"000");



 