Senin, 09 Juni 2014

Gauss Seidel pada Metode Numerik

Algoritma Program Pascal untuk Gauss Seidel pada Metode Numerik

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:
end.


Preview Program:
 

1 komentar:

Related Posts Plugin for WordPress, Blogger...