Rabu, 20 Juni 2012

Program Gauss Jordan By Pascal


program p_gaussjordan;

{$APPTYPE CONSOLE}

uses
  wincrt;
  {Program Ali Imron
    Eliminasi Gauss Jordan dengan pivoting
    Daftar variabel
    a[],b[] : matriks pembentuk persamaan simultan linear
    g[]     : matriks gabungan
    x       : matriks hasil perhitungan }

  type
  mat55   = array[0..5,0..5] of real;
  mat56   = array[0..5,0..5] of real;

  var
    a             : mat55;
    g             : mat56;
    b             : array [0..5] of real;
    factor,dummy  : real;
    i,j,k,n       : Integer;

  procedure Inisialisasi;
  begin
    a[0][0] := 1;
    a[0][1] := 3;
    a[0][2] := 1;
    a[1][0] := 1;
    a[1][1] := 2;
    a[1][2] := 5;
    a[2][0] := 4;
    a[2][1] := 1;
    a[2][2] := 2;
    b[0]    := 10;
    b[1]    := 12;
    b[2]    := 16;
    n       :=3;
  end;

begin
  Inisialisasi;
  {Bentuk matriks gabungan}
  for i:=0 to n-1 do
  for j:=0 to n-1 do
    g[i][j]:= a[i][j];
  for j:=0 to n-1 do
    g[j][n]:= b[j];
  Writeln('----------------------------------');
  Writeln('Matriks Penggabungan');
  for i:=0 to n-1 do
  begin
    for j:=0 to n do
    write(g[i][j]:10:5);
    writeln;
  end;  Writeln('----------------------------------');

   


{ Proses eliminasi }
  for i:=0 to n-1 do
  begin
    { pivoting }
    dummy := abs(g[i][i]);
    k:=i;
    for j:=i+1 to n-1 do
      if (abs(g[j][i])> dummy) then
      begin
        dummy := abs(g[j][i]);
        k:= j;
      end;

      if (k <> i) then
    for j:=i to n do
      begin
          dummy := g[k][j];
          g[k][j] := g[i][j];
          g[i][j] := dummy;
      end;

    for j:= 0 to n-1 do
      begin
        if (i <> j) then
        begin
          factor  := g[j][i]/g[i][i];
          for k:= i to n do
            g[j][k] := g[j][k]- factor*g[i][k];
        end;
      end;
  end;

  for i:= 0 to n-1 do
  begin
    g[i][n] := g[i][n]/g[i][i];
    g[i][i] := 1;
  end;

  Writeln('Matriks Setelah eliminasi');
  for i:= 0 to n-1 do
  begin
    for j:= 0 to n do
    write (g[i][j]:10:5);
    writeln;
  end;  Writeln('----------------------------------');


  Writeln('Hasil Akhir');
  for i:= 0 to n-1 do
  Writeln('x[',i:2,'] = ',g[i][n]:10:5);
  Writeln('----------------------------------');
  writeln('writen by Ali Imron 3105111303 TID');
  Writeln('----------------------------------');
  readln;
end.

Tidak ada komentar:

Posting Komentar