Método do Ponto Fixo em Rn

Implementação do método do ponto fixo em Rn, para resolução de sistemas de equações não lineares da forma G (X) = X, em que X = (x_ 1, ... , x_n) e G = (g_ 1, ... , g_n). A convergência do método é condicional e tipicamente de primeira ordem. 

Parâmetros de entrada:

*  G, X : a função vectorial G e o seu argumento X
* X0     : vector que dá a aproximação inicial
* tol      : erro maximo desejado, medido com base da distância entre as duas últimas iteradas.
* nmax : número máximo de iterações

Parâmetros de saída:

* vector numérico com a solução do problema, correspondendo à última iteração calculada. Se o número máximo de iterações for atingido é emitida mensagem de erro.

PontoFixo[Gs_,X_,X0_,tol_,nmax_]:=Module[{G,sol,oldsol,iter,n,i},
(* Gs e X devem ser vectores da mesma dimensão *) 
n=Length[X];
G[s_]:=Gs/.Table[X[[i]]->s[[i]],{i,1,n}];
NormaInf[s_]:=Max[Abs[s]];
sol=X0;
oldsol=sol+2*tol;
iter=0;
While[And[iter≤nmax, NormaInf[sol-oldsol]>tol],
oldsol=sol;
sol = G[sol];
iter++];
Print["Foram realizadas ",iter," iterações"];
If[iter≥nmax,Print["AVISO: Número máximo de iterações foi atingido"]];
sol
]

Exemplo:

G={Cos[0.5*y],Sin[0.3*x]};
X={x,y};
X0={0,0};
nmax=1000;
tol=10^(-6);
PontoFixo[G,X,X0,tol,nmax]