Implementação do Método do ponto fixo para equações não lineares

O método do ponto fixo destina - se a  a resolver numericamente equações escritas na forma g (x) = x.
 O método nem sempre converge (ver slides das aulas).
 
 Parâmetros de entrada:
 
* g,x : Função g e seu argumento
* x0  : Aproximação inicial
* tol  : Erro máximo desejado, medido como a diferença entre as duas últimas iterações
* nmax : número máximo de iterações a realizar.

Parâmetros de saída:

* Aproximação da solução, dada pela última iteração realizada.
* mensagem de erro, caso tenha sido atingido o número máximo de iterações.

PontoFixo[gs_,x_,x0_,tol_,nmax_]:=Module[{g,sol},
g[s_]:=gs/.x->s;
sol=x0;
iter=0; (* contador do numero de iterações *)
oldsol=x0+2*tol; (*para garantir que entramos no ciclo *)
While[And[iter≤nmax,Abs[sol-oldsol]>tol],
oldsol = sol;
sol=g[sol];
iter++
];
If[iter>=nmax,Print["AVISO: Número máximo de iterações atingido. A solução pode não ter aprecisão pretendida"]];
sol
];

Exemplo : aplicação à resolução da eq. cos (x) = x.

PontoFixo[Cos[x],x,0.5,10^(-8),100]