program Seidel;
uses wincrt;
var
i, j, k, n, max : integer;
xbaru, tolmin, tolmax, er : real;
a : array[0..20,0..20] of real;
c : array[0..20] of real;
x : 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(' x1 x2 x3');
for i:= 1 to n do
begin
write(' ',x[i]:0:6);
end;
writeln('');
for k:= 1 to max do
begin
er:= 0;
for i:= 1 to n do
begin
xbaru:= c[i];
for j:= 1 to n do
begin
if j <> i then xbaru:= xbaru - a[i,j]*x[j];
end;
xbaru:= xbaru/a[i,i];
er:= abs(xbaru - x[i]);
if er > tolmax then
begin
writeln('');
writeln('Divergen.');
goto 3;
end;
x[i]:= xbaru;
write(' ',x[i]:0:6);
end;
writeln('');
if er <= tolmin then goto 2;
end;
writeln('Proses belum konvergen.');goto 3;
2:
{Cetak hasil jika ditemukan}
writeln('');
writeln('Akar-akarnya adalah');
for i:= 1 to n do
begin
writeln('x',i,' = ',x[i]:0:4);
end;
3:
Soalnya gimana ini kak?
BalasHapus