13
PR KOMPUTASI NUMERIK “SPAL” Anggota Kelompok : Fikri Averous / 1406607792 Meidina Sekar Nadisti / 1406553045 Nadya Saarah Amelinda / 1406552824 Naufal Syafiq Maro / 1406607981 Rana Rezeki Najeges / 1406553026

Pr Komputasi numerik Spal

Embed Size (px)

DESCRIPTION

komputasi numerik SPAL pr

Citation preview

Page 1: Pr Komputasi numerik Spal

PR KOMPUTASI NUMERIK

“SPAL”

Anggota Kelompok :

Fikri Averous / 1406607792

Meidina Sekar Nadisti / 1406553045

Nadya Saarah Amelinda / 1406552824

Naufal Syafiq Maro / 1406607981

Rana Rezeki Najeges / 1406553026

UNIVERSITAS INDONESIA

DEPOK

2015

Page 2: Pr Komputasi numerik Spal

Sistem Persamaan Aljabar Tak Linear

Metode Newton Rhapson

Cara Eksak

Page 3: Pr Komputasi numerik Spal

Coding SPAL

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);

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];

Page 4: Pr Komputasi numerik Spal

    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;

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---}

Page 5: Pr Komputasi numerik Spal

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);  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;

Page 6: Pr Komputasi numerik Spal

      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.

Page 7: Pr Komputasi numerik Spal
Page 8: Pr Komputasi numerik Spal
Page 9: Pr Komputasi numerik Spal
Page 10: Pr Komputasi numerik Spal
Page 11: Pr Komputasi numerik Spal
Page 12: Pr Komputasi numerik Spal