Maple Code
> secantmethod :=
proc(x0,x1,max)
> local k,p0,p1,p2;
> k := 1;
> p0 := evalf(x0);
> p1 := evalf(x1);
> printf(" P%g = %g \n",0,p0);
> printf(" P%g = %g \n",1,p1);
> p2 := p1;
> p1 := p0;
> for k from 1 to max do
> p0 := p1;
> p1 := p2;
> p2 := p1 - f(p1)*(p1-p0)/(f(p1)-f(p0));
> printf(" P%g = %g
\n",k+1,p2);
> end do;
> print(`f(x) = `,f(x));
> printf(" P = %g \n",p2);
> printf(" dP = %g \n",abs(p2-p1));
> printf("f(P) = %g \n",f(p2));
> RETURN(p2);
> end;
> f := proc(x)
> 4*x^3-16*x^2+17*x-4
> end proc;
(c) John H. Mathews 2004