kelompok 3 kompnum

11
TUGAS KOMPUTASI NUMERIK KELOMPOK 3 Adam M. Fadhan (1406552959) Barneus Wanglie (1406607760) Eufrat Erardi (1406552995) Ghassan Tsabit Rivai (1406552976) Thareq Kemal Habibie (1406552963)

Upload: ghassan-tsabit

Post on 14-Feb-2016

5 views

Category:

Documents


0 download

DESCRIPTION

TUGAS KOMPUTASI NUMERIK

TRANSCRIPT

Page 1: KELOMPOK 3 KOMPNUM

TUGAS KOMPUTASI NUMERIK

KELOMPOK 3

Adam M. Fadhan (1406552959)

Barneus Wanglie (1406607760)

Eufrat Erardi (1406552995)

Ghassan Tsabit Rivai (1406552976)

Thareq Kemal Habibie (1406552963)

Page 2: KELOMPOK 3 KOMPNUM
Page 3: KELOMPOK 3 KOMPNUM
Page 4: KELOMPOK 3 KOMPNUM
Page 5: KELOMPOK 3 KOMPNUM
Page 6: KELOMPOK 3 KOMPNUM
Page 7: KELOMPOK 3 KOMPNUM
Page 8: KELOMPOK 3 KOMPNUM

PROGRAM PASCAL :

program SPANLsolveit;

Const

NEQ = 6;

Type

Real = Extended;

RVektor = Array[1..NEQ] of Real;

RMatriks = Array[1..NEQ] of RVektor;

Procedure EGAUSS (A : RMatriks;

var x : RVektor;

b : RVektor;

noe : Integer);

Page 9: KELOMPOK 3 KOMPNUM

var

i,j,k : integer;

pivot, mult,top: Real;

k1,k2,k3,k4: extended;

Begin

For j:= 1 to noe-1 do

Begin {Triangularisasi}

pivot := a[j,j];

for i := j+1 to noe do

begin

mult := a[i,j]/pivot;

for k := j+1 to noe do

a[i,k] := a[i,k]-mult*a[j,k];

b[i] := b[i]-mult*b[j];

End;

End; {Triangularisasi}

(*---Substitusi Balik---*)

writeln('a[i,i] = ',a[noe,noe]);

x[noe] := b[noe]/a[noe,noe];

For i := noe-1 downto 1 do

Begin

top := b[i];

For k:= i+1 to noe do

top := top-a[i,k]*x[k];

x[i] := top/a[i,i]

End;

End;

Procedure FSPANL (x: RVektor;

var f: RVektor;

noe: Integer);

{Fungsi vektorial dari SPANL}

Var i: Integer;

fx: RVektor;

Begin

fx[1]:=3*x[1]*x[1]-x[2]*x[2] ;

fx[2]:=3*x[1]*x[2]*x[2]+x[1]*x[1]*x[1]-1;

For i := 1 to noe do f[i] := fx[i];

End;

Page 10: KELOMPOK 3 KOMPNUM

Procedure JACSPANL (x : RVektor;

var A : RMatriks;

noe : Integer);

{Matriks JACOBI dari Fungsi SPANL}

Begin

A[1,1] := 6*x[1];

A[1,2] := -2*x[2];

A[2,1] := 3*x[2]*x[2]-3*x[1]*x[1];

A[2,2] := 6*x[1]*x[2];

End;

Function NormVect (x : RVektor; n : Integer) : Real;

Var

sum: Real;

i: Integer;

Begin

sum := 0.0;

For i := 1 to n do sum := sum + sqr(x[i]);

NormVect := sum;

End;

{--- Main Program---}

Var

ITER, ITMAX : Integer;

I,N : Integer;

Aij : RMatriks;

FX,DX,X : RVektor;

Solved, Converged, ItmaxReached : Boolean;

FTOL, TOL, NV : Real;

Begin

write('Jumlah persamaan/variable: ');

readln(N);

writeln('Harga awal x: ');

for I:=1 to N do

Begin

write ('X0[' ,I, ']= ');

Readln(x[I]);

End;

write('ITMAX: '); readln(ITMAX);

write('FTOL: '); readln(FTOL);

Page 11: KELOMPOK 3 KOMPNUM

write('XTOL: '); readln(TOL);

{Menghitung fungsi SPANL}

FSPANL(x,FX,N);

NV := NormVect (FX,N);

ITER := 0;

if (NV>FTOL)then

{memeriksa nilai}

Repeat

inc(ITER);

JACSPANL(X, Aij, N);

EGAUSS(Aij, DX, FX, N);

for I:=1 to N do X[I] := X[I] - DX[I];

FSPANL(x,FX,N);

Solved := NormVect(FX,N)<FTOL;

IF NOT SOLVED THEN FSPANL(X, FX,N);

Converged := NormVect (DX,N)<TOL;

ItMaxReached := Iter >= Itmax;

Until solved or converged or ItMaxReached;

if not ItMaxReached then

Begin

writeln('Vektor jawab x adalah :');

for I:= 1 to N do writeln('X[',I,']=',X[I]);

for I:= 1 to N do writeln('DX[',I,']=',DX[I]);

for I:= 1 to N do writeln('FX[',I,']=',FX[I]);

writeln('Jumlah iterasi:',ITER);

End else

writeln('Tak ada konvergensi setelah ', ITMAX,'Iterasi terlampai');

End.