>    restart;
iterate := proc(funkce,n::posint,start::name=realcons)
local f,fp,i,j,it,iterTable,results,L,extrait,maxx,index;
  f := unapply(funkce,x);
  fp:= rhs(start);
  for i from 0 to n do
  it[i] := fp;
  fp := f(fp);
  od;

if (nargs = 3) then
  results:=[``,``,``];
else
  L := sort([seq(args[i],i=4..nargs)]);
  extrait:=nops(L);
  maxx:=L[extrait];

  for i from (n+1) to maxx do
   it[i] := fp;
   fp := f(fp);
  od;
  results:=[`___`,`__`,`____________`];

    
  for j from 1 to extrait do
    index:= L[j];  
    results:=results,[x[index],`=`,it[index]]
  od;

end if;


iterTable:=matrix([seq([x[i],`=`,it[i]],i=0..n),results])
 
end:
 

>    iterate(cos(x),5,x0=.5,10,15,20,30);

matrix([[x[0], `=`, .5], [x[1], `=`, .8775825619], [x[2], `=`, .6390124942], [x[3], `=`, .8026851007], [x[4], `=`, .6947780268], [x[5], `=`, .7681958313], [___, __, ____________], [x[10], `=`, .7350063...

>    iterate(1/2*x+2,4,x0=1.5,10,32);

matrix([[x[0], `=`, 1.5], [x[1], `=`, 2.750000000], [x[2], `=`, 3.375000000], [x[3], `=`, 3.687500000], [x[4], `=`, 3.843750000], [___, __, ____________], [x[10], `=`, 3.997558594], [x[32], `=`, 4.0000...

>    iterate(2*x,4,x0=0.5,10,20);

matrix([[x[0], `=`, .5], [x[1], `=`, 1.0], [x[2], `=`, 2.0], [x[3], `=`, 4.0], [x[4], `=`, 8.0], [___, __, ____________], [x[10], `=`, 512.0], [x[20], `=`, 524288.0]])

>    iterate(x+1,4,x0=0.5,10,20);

matrix([[x[0], `=`, .5], [x[1], `=`, 1.5], [x[2], `=`, 2.5], [x[3], `=`, 3.5], [x[4], `=`, 4.5], [___, __, ____________], [x[10], `=`, 10.5], [x[20], `=`, 20.5]])

>    iterate(x,2,x0=0.5,10);

matrix([[x[0], `=`, .5], [x[1], `=`, .5], [x[2], `=`, .5], [___, __, ____________], [x[10], `=`, .5]])

>    iterate(1/x,4,x0=0.6,21,22);

matrix([[x[0], `=`, .6], [x[1], `=`, 1.666666667], [x[2], `=`, .5999999999], [x[3], `=`, 1.666666667], [x[4], `=`, .5999999999], [___, __, ____________], [x[21], `=`, 1.666666667], [x[22], `=`, .599999...

>    iterate(sqrt(x),4,x0=0.5,10,1);

matrix([[x[0], `=`, .5], [x[1], `=`, .7071067812], [x[2], `=`, .8408964153], [x[3], `=`, .9170040432], [x[4], `=`, .9576032807], [___, __, ____________], [x[1], `=`, .7071067812], [x[10], `=`, .9993233...

>    iterate(log(x),4,x0=2.5);

matrix([[x[0], `=`, 2.5], [x[1], `=`, .9162907319], [x[2], `=`, -.8742157176e-1], [x[3], `=`, -2.437013210+3.141592654*I], [x[4], `=`, 1.380278243+2.230559432*I], [``, ``, ``]])

>    iterate((x^2-1)/3,4,x0=0.5,10,20);

matrix([[x[0], `=`, .5], [x[1], `=`, -.2500000000], [x[2], `=`, -.3125000000], [x[3], `=`, -.3007812500], [x[4], `=`, -.3031768798], [___, __, ____________], [x[10], `=`, -.3027756648], [x[20], `=`, -....

>    iterate(2*arctan(x),6,x0=1.5,10,1000);

matrix([[x[0], `=`, 1.5], [x[1], `=`, 1.965587446], [x[2], `=`, 2.200340520], [x[3], `=`, 2.288454268], [x[4], `=`, 2.317651274], [x[5], `=`, 2.326914454], [x[6], `=`, 2.329812376], [___, __, _________...

>