Решение системы уравнений методом итерации
Предлагаем код программы для численного решения систем линейных алгебраических уравнений методом простой итерации. Программа реализована на языке программирования Pascal. Такая программа - готовый код для курсовой работы по численным методам, с реализацией на Паскале.
program iter; uses CRT; var i,j,n,k,V:integer; M:longint; A,B:array [1..24,1..24] of double; E,S,Cc,maxDi,C,Mm: double; Xx,X,Ba,Bd: array [1..24] of double; z:char; procedure Matrln; begin for var i:=1 to n do for var j:=1 to n do read(A[i,j]); end; procedure Vectln; begin for var i:=1 to n do read(Ba[i]); end; BEGIN ClrScr; Repeat write('Vvedite nomer variant V='); readln(V); if V=0 then writeln('------------Testoviy primer----------') else writeln('------------Variant',V,'----------'); writeln('------------VVOD ISHODNIX DANNIX :----------'); write('Vvedite tochnost vichisleniu, E='); readln(E); write('Vvedite razmernost sistemi, N='); readln(N); write('Vvodite postrochno matrix A sistemi'); Matrln; write('Vvodite vector stolbec B sistemi'); Vectln; maxDi:=-1000; for i:=1 to n do begin B[i,i]:=0; for j:=1 to n do if j<>i then B[i,j]:=-(A[i,j]/A[i,j]); Bd[i]:=Ba[i]/A[i,i]; if Bd[i]>maxDi then maxDi:=Bd[i] end; writeln('maxDi=',maxDi:8:4); C:=0; for i:=1 to n do begin Xx[i]:=Bd[i]; S:=0; for j:=1 to n do S:=S+abs(B[i,j]); if C<=S then C:=S; end; writeln('C=',C:6:4); if C<1 then begin Mm:=abs((1/ln(C))*(ln(maxDi)-ln(E*(1-C)))-1); M:=Round(Mm); if Frac(Mm)<0.5 then M:=M+1; writeln('Kolichestvo iterachiy M=',M:3); for k:=1 to M do begin for i:=1 to n do begin; Cc:=0; for j:=1 to n do Cc:=Cc+B[i,j]*Xx[j]; X[i]:=Bd[i]+Cc; end; for i:=1 to n do Xx[i]:=X[i]; end; write('X= ['); for i:=1 to n do write(X[i]:8:4); writeln(']'); end else writeln('Yslovie shodimosti ne vipoln9ets9'); write('Bydete prodolshat vichisleniy?(Y/N) Y'); z:=ReadKey; writeln(z); until (z='N') or(z='n'); End.
Скрин выполнения программы