Implementação do  Método de Jacobi

Jacobi[A_,b_,x0_,nmax_,tol_]:=Module[{n,sol,oldsol,iter},
n=Length[A];
sol = x0;
oldsol=x0+2*tol;
iter=0;
While[And[iter<nmax,Max[Abs[sol-oldsol]]>tol],
oldsol=sol;
For[i=1,i≤n,i++,
sol[[i]]=(b[[i]]-Sum[A[[i,j]]*oldsol[[j]],{j,1,i-1}]-Sum[A[[i,j]]*oldsol[[j]],{j,i+1,n}])/A[[i,i]]
];
iter++
];
Print["Foram realizadas ", iter," iterações"];
If[iter≥nmax,Print["AVISO: Foi atingido o numero maximo de iteraçoes"]];
sol
];

Exemplo

A={{4,1,1},{2,4,1},{0,1,2}}; b={1,0,1};
Jacobi[A,b,{0.,0.,0.},100,10^(-8)]

Implementação do  Método de Gauss - Seidel

GaussSeidel[A_,b_,x0_,nmax_,tol_]:=Module[{n,sol,oldsol},
n=Length[A];
sol = x0;
oldsol=x0+2*tol;
iter=0;
While[And[iter<nmax,Max[Abs[sol-oldsol]]>tol],
oldsol=sol;
For[i=1,i≤n,i++,
sol[[i]]=(b[[i]]-Sum[A[[i,j]]*sol[[j]],{j,1,i-1}]-Sum[A[[i,j]]*oldsol[[j]],{j,i+1,n}])/A[[i,i]]
];
iter++
];
Print["Foram realizadas ", iter," iterações"];
If[iter≥nmax,Print["AVISO: Foi atingido o numero maximo de iteraçoes"]];
sol
];

A={{4,1,1},{2,4,1},{0,1,2}}; b={1,0,1};
GaussSeidel[A,b,{0.,0.,0.},100,10^(-8)]

Eliminação de Gauss

ElimGauss[A_,b_]:=Module[{A0=A,b0=b,n,i,p,k},
n=Length[b];
b0=b;
For[p=1,p≤n,p++,
b0[[p]]=b0[[p]]/A0[[p,p]];
A0[[p]]=A0[[p]]/A0[[p,p]];
For[i=1,i≤n,i++,
If[i≠p,
b0[[i]]=b0[[i]]-A0[[i,p]]*b0[[p]]];
If[i!=p, 
A0[[i]]=A0[[i]]-A0[[i,p]]*A0[[p]]];
];
];
b0];

n=2000;
A=n*IdentityMatrix[n]+Table[Random[],{i,1,n},{j,1,n}];
b=Table[Random[],{i,1,n}];
x0=Table[0,{i,1,n}];

Timing[elim=ElimGauss[A,b]][[1]]
Timing[jac=Jacobi[A,b,x0,2*n,10^(-12)]][[1]]
Timing[gs=GaussSeidel[A,b,x0,2*n,10^(-12)]][[1]]

Exemplo Leontief

leo=Import["/Users/joaojanela/Documents/leontief_mathematica.xls","XLS"][[1]];
n=Dimensions[leo][[1]];
A=IdentityMatrix[n]-Table[leo[[i,j]],{i,1,n},{j,1,n}];
b=Table[leo[[i,n+1]],{i,1,n}];
x0=Table[0,{i,1,n}];

sol1=Jacobi[A,b,x0,1000,10^(-5)]

sol2=GaussSeidel[A,b,x0,1000,10^(-6)]

sol3=ElimGauss[A,b]