Program SOR; Uses crt,math; Type M=array[1..100,1..100] of real; Vector=array[1..100] of real; Var I,J,N,Iter:integer; S1,S2,W,Tol,Error:real; Excel:text; H:M; Xold,Xnew,Xgs,Xbueno,Xerror,b:Vector; Procedure normainfinito(V:Vector;N:integer;var Norma:real); Var I:integer; Begin Norma:=0; FOR I:=1 TO N DO Begin IF Norma < abs(V[I]) THEN Norma:= abs(V[I]); End; End; Begin clrscr; write('Ingrese la cantidad de filas/columnas que tendra la matriz de Hilbert, con una dimension maxima de 100x100: '); readln(N); writeln(); write('Ingrese el parametro de sobre-relajacion W: '); readln(W); writeln(); write('Ingrese la tolerancia deseada: '); readln(Tol); writeln(); writeln('-------------------------------------------'); writeln(); {Ac  se crea la matriz de Hilbert} FOR I:=1 TO N DO Begin FOR J:=1 TO N DO Begin H[I,J]:=1/(I+J-1); End; End; {Ac  se crea el vector solucnion b} b[1]:=1; FOR I:=1 TO N DO Begin FOR J:=1 TO N DO Begin b[I]:=b[I]+H[I,J]; End; End; {Ac  se crea la semilla (vector nulo)} FOR I:=1 TO N DO Begin xold[I]:=0; End; {Ac  se crea la solucion exacta} FOR I:=1 TO N DO Begin Xbueno[I]:=1; End; {Ac  empieza a correr el m‚todo} Error:=Tol+1; WHILE Error>=Tol DO Begin FOR I:=2 TO N-1 DO Begin Iter:=1; S1:=0; FOR J:=1 TO I-1 DO Begin S1:=S1+H[I,J]+Xold[I]; S2:=0; End; FOR J:=I+1 TO N DO Begin S2:=S2+H[I,J]*Xold[I]; Xgs[I]:=(b[I]-S1-S2)/H[I,I]; Xnew[I]:=Xold[I]/(1-W)+Xgs[I]*W; End; FOR I:=1 TO N DO Begin Xerror[I]:=Xnew[I]-Xbueno[I]; End; {FALTA CALCULAR EL ERROR!!!!!!! QUE ES LA NORMA INFINITO DE XERROR!!!!!} End; End; writeln('Con un W=',W:0:2,' y una tolerancia de ',Tol:0:5,' ,el metodo llego a la convergencia luego de ',Iter,' iteraciones'); writeln(); writeln('El vector solucion encontrado fue '); writeln(); FOR I:=1 TO N DO Begin writeln(' ',Xnew[I]:0:5); End; readkey; end.