program Jacobi_The_Queen_of_Science;
uses wincrt;
var
i, j, k, n, cek, max : integer;
tolmin, tolmax, er : real;
a : array[0..20,0..20] of real;
c : array[0..20] of real;
x, xh : array[0..20] of real;
label 1, 2, 3, 4, 5;
begin
1:
writeln('Orde matriks anda(maksimal 20x20): ');readln(n);clrscr;
writeln('Tentukan toleransi maksimum anda: ');readln(tolmax);clrscr;
writeln('Tentukan toleransi minimum anda: ');readln(tolmin);clrscr;
writeln('Tentukan banyak iterasi yang anda inginkan: ');readln(max);clrscr;
{Input elemen-elemen dan tebakan awal}
writeln('Masukkan elemen-elemen matriks dan tebakan awal anda.');
for i:= 1 to n do
begin
for j:= 1 to n do
begin
write('a',i,'',j,' = ');readln(a[i,j]);
end;
write('Masukkan ruas kanan c',i,' = ');readln(c[i]);
write('Masukkan tebakan awal x',i,' = ');readln(x[i]);
end;
clrscr;
{Proses eliminasi dan pencetakan}
writeln(' Tabel');
writeln('Iterasi x1 x2 x3');
for i:= 1 to n do
begin
write(' ',0,' ',x[i]:0:10);
end;
writeln('');
for k:= 1 to max do
begin
cek:= 0;
for i:= 1 to n do
begin
xh[i]:= c[i];
for j:= 1 to n do
begin
if j <> i then xh[i]:= xh[i] - a[i,j]*x[j];
end;
xh[i]:= xh[i]/a[i,i];
er:= abs(x[i] - xh[i]);
if er < tolmin then cek:= cek + 1;
if er > tolmax then
begin
writeln('Divergen!');goto 3;
end;
end;
for i:= 1 to n do
begin
x[i]:= xh[i];
if k < 10 then write(' ',k,' ',x[i]:0:10);
if k >= 10 then
begin
if k < 100 then write(' ',k,' ',x[i]:0:10);
end;
if i = n then
begin
if cek = 3 then goto 2;
end;
end;
writeln;
end;
writeln('Proses belum konvergen.');goto 3;
2:
{Cetak hasil jika ditemukan}
writeln;
writeln('Akar-akarnya adalah');
for i:= 1 to n do
begin
write(' x',i,' = ',x[i]:0:4);
end;
3:
end.
kak, ini berapa toleransi maks dan toleransi min nya kak ?
BalasHapus