You are on page 1of 13

Tugas Permodelan Teknik Kimia I (Soal Kuis I)

Departemen Teknik Kimia, Universitas Indonesia

Nama: Muhammad Miftah Raf Kelas: Pagi, K.211


NPM: 1506717872
___________________________________________________________________________

1. Dengan menggunakan Spreadsheet MS-Excel atau Program


!
FORTRAN ---> Pembentukan
yang anda miliki,MATRIKS DIAGONAL
carilah solusi SPAL ATAS <---
berikut ini:
Do I=1,
a. x+ y+ 3 z=5 NEQ-1 b. 3 u+1.1 v2 w1.8 x=11
x+ y+Diag
z=7= A(I,I) 3.2u+ 2.1 v+ 3.2 w+2.2 x=0
Do J=I+1, NEQ
4 x + 4 y +12 z =20 3.4 u+2.3+ 4.1 w+3.2 x=6
FMul = A(J,I)/Diag 1.6 u+1.1 v3.2 w+ 2.4 x=5
Do K=I,NEQ
Solusi A(J,K) = A(J,K) - A(I,K)*FMul
Enddo
b(J) = b(J)
Menggunakan - b(I)*FMul
Program Fortran 95, kedua soal SPAL tersebut
Enddo
dapat diselesaikan menggunakan algoritma dan pemrograman
Enddo Gauss.
Eliminasi
! ---> AKHIR dari Pembentukan MATRIKS DIAGONAL ATAS
<---
Listing Program Eliminasi Gauss:
! ---> Backsubstitution <---
Program
x(NEQ)EliminasiGauss
= b(NEQ)/A(NEQ,NEQ)
Do I=NEQ-1,1,-1
Parameter
Sum = 0.0 (NofEqn = 3)
Real*8 A(NofEqn,NofEqn)
Do J=NEQ,I+1,-1
Real*8
Sum b(NofEqn),x(NofEqn)
= Sum + A(I,J)*x(J)
Integer
EnddoI,J,K,NEQ
Real*8
x(I) =Diag,FMul,SUm
(b(I) - Sum)/A(I,I)
Enddo
!! --->
---> Seksi
AKHIRELIMINASI GAUSS <--- <---
dari Backsubstitution
! INPUT N => Jumlah Persamaan HARUS = NofEqn
! NEQ = NofEqn
---> AKHIR dari Seksi Eliminasi GAUSS <---
! AKHIR dari INPUT N
Write(*,*) 'Matriks DIAGONAL ATAS dan VEKTOR RUAS
!KANAN:'
INPUT A => Masukkan harga komponenen MATRIKS A
DO I=1,NEQ
Do I=1,NEQ
DO J=1,NEQ
Do J=1,NEQ
WRITE(*,'(A,I1,A,I1,A,$)')
Write(*,'(F8.4,3X,$)') A(I,J)'A(',I,',',J,') = '
READ(*,*) A(I,J)
Enddo
END DO
Write(*,'(F8.4)') b(I)
WRITE(*,'(A,I1,A,$)') 'b(',I,') = '
Enddo
READ(*,*) b(I)
END DO
Write(*,*)
! AKHIR dari'HASIL,
Write(*,*) INPUT berupa
A dan bVEKTOR JAWAB:'
Do I=1,NEQ
! ---> Pembentukan MATRIKS DIAGONAL
Write(*,'(2X,A2,I1,A4,F10.6)') 'x(',I,') =ATAS
',x(I)<---
Do I=1, NEQ-1
Enddo

STOP
END

! === AKHIR dari Program Utama ===


a. Ketika memasukkan persamaan-persamaan ke dalam
program, yang didapat adalah sebagai berikut:
Hal tersebut terjadi dikarenakan, persamaan (a) tidak
memiliki solusi, maka tidak dapat diselesaikan
menggunakan program Eliminasi Gauss.

b. Untuk persamaan (b), didapatkan hasil sebagai berikut:

Persamaan (b) memiliki solusi, yaitu:


u=40.675270
v =77.867450
w=3.111657
x=10.637944

2. Dengan menggunakan Spreadsheet MS-Excel atau Program


FORTRAN yang anda miliki, carilah solusi SPANL berikut ini:
a. 2 sin x +3 cos y =0.4119 b. x 1 x 2x 2 x 3 + x 4 x3 =3.919
3 2
2 e x 3 ln y=3.427 x 1+2 x 23 x 34 x 4=2.580
x 1+ x 2 + x 3x 4=3.663
2 2
x +2 x 1 x 2 +x =1.000
1 2

Solusi

Menggunakan Program Fortran 95, SPANL dua persamaan atau


lebih, dapat diselesaikan menggunakan Matriks Jacobi, serta
menggunakan
C pemrograman
Menghitung SPANL
harga norma dua
fungsi persamaan atau
SPANL
lebih. CALL FSPANL(X,FX,N)
NV = NormVect(FX,N)
ListingITER
Program
= 0 SPANL 2 Persamaan atau Lebih:

If (NVSPANL_2Pers
Program .LT. FTOL) then
C memeriksa harga norma fungsi SPANL
WRITE(*,*)(NEQ
PARAMETER 'SOLVED:
= 2) Norm Vektor is less than
TOLerance'
STOP ITER,ITMAX,I,N
INTEGER
EndIf
REAL*8 Aij(NEQ,NEQ)
REAL*8 FX(NEQ),DX(NEQ),X(NEQ)
10LOGICAL
CONTINUE Solved,Converged,ItMaxReached
ITER = ITER
REAL*8 +1
FTOL,TOL,NV,NormVect

CALL JACSPANL(X,Aij,N)
CALL EGAUSS(Aij,DX,FX,N)
WRITE(*,17) 'Jumlah persamaan/variabel: '
READ(*,*) N
Do I= 1,N 'Harga-harga awal untuk X:'
Write(*,*)
DoX(I)
I ==1,N
X(I) - DX(I)
EndDo
Write(*,18) 'X0[',I,']= '
Read(*,*) X(I)
EndDoFSPANL(X,FX,N)
CALL
Solved = (NormVect(FX,N) .LT. FTOL)
If (.NOT. Solved)
Write(*,17) 'ITMAX:CALL' FSPANL(X,FX,N)
Read(*,*) ITMAX
Converged =
Write(*,17) (NormVect(DX,N)
'FTOL: ' .LT. TOL)
ItMaxReached
Read(*,*) FTOL= (ITER .GE. ITMAX)
Write(*,17) 'XTOL:.OR.
IF (.NOT. (Solved ' Converged .OR.
ItMaxReached))
Read(*,*) TOL GO TO 10

17IFFORMAT(A,$)
(.NOT. ItMaxReached) then
Write(*,*) 'Vektor jawab X adalah:'
18 FORMAT(A,I1,A,$)
Do I = 1,N
C write(*,*) 'X[',I,']=
Menghitung ',X(I) fungsi SPANL
harga norma
EndDo
CALL FSPANL(X,FX,N)
Do I = 1,N
write(*,*) 'DX[',I,']= ',DX(I)
EndDo
Do I = 1,N
write(*,*) 'FX[',I,']= ',FX(I)
EndDo
Write(*,*) 'Jumlah Iterasi: ',ITER
Else
Write(*,*) 'Tak ada KONVERGENSI setelah ',ITMAX,
* ' Iterasi terlampaui'
EndIf
STOP
END

Subroutine EGAUSS (A,x,b,noe)


INTEGER noe
REAL*8 A(noe,*),x(*),b(*)
INTEGER i,j,k
REAL*8 pivot,mult,top

Do j=1,noe-1
C {Triangularisasi}
pivot = a(j,j)
Do i=j+1,noe
mult = a(i,j)/pivot
Do k = j+1,noe
a(i,k) = a(i,k)- mult*a(j,k)
b(i) = b(i) - mult*b(j)
EndDo
EndDo
EndDo
C {Triangularisasi}

C *---Substitusi Balik---*
x(noe) = b(noe)/a(noe,noe)
Do i = noe-1,1,-1
top = b(i)
Do k = i+1,noe
top = top - a(i,k)*x(k)
x(i) = top/a(i,i)
EndDo
EndDo

RETURN
END

Subroutine FSPANL (x,f,noe)


C Fungsi vektorial dari SPANL

INTEGER noe,i
REAL*8 x(noe),f(noe), fx(noe)

fx(1) = -11*x(1) + 10.0


fx(2) = x(1) - 10*x(2) - 0.1*x(2)**2 + 1.0
fx(3) = 0.1*x(2)**2 - 10*x(3)
Do i = 1,noe
f(i) = fx(i)
Do i = 1,noe
f(i) = fx(i)
EndDo

RETURN
END

Subroutine JACSPANL(x,A,noe)
C Matriks JACOBI dari Fungsi SPANL
INTEGER noe
REAL*8 x(*),A(noe,*)

A(1,1) = -11.0
A(1,2) = 0.0
A(1,3) = 0.0
A(2,1) = 1.0
A(2,2) = -10.0 - 0.2*x(2)
A(2,3) = 0.0
A(3,1) = 0.0
A(3,2) = 0.2*x(2)
A(3,3) = -10.0

RETURN
END

Function NormVect(x,n)
INTEGER n,i
REAL*8 NormVect,x(*)
REAL*8 sum

sum = 0.0
Do i = 1,n
sum = sum + x(i)**2
EndDo
NormVect = sum

RETURN
END
Untuk menyelsaikan soal SPANL, dapat hanya dengan
merubah jumlah persamaan pada PARAMETER (NEQ=),
jumlah fx beserta persamaan-persamaannya, dan terakhir
hasil turunannya terhadap tiap variable yang ada pada
persamaan.

a. Untuk persamaan (a),


Didapatkan solusi pada iterasi ke-5, yaitu:

x=1.01680924232
y=2.01490792647

b. Untuk persamaan SPANL (b), digunakan Spreadsheet MS-


Excel untuk mencari solusinya.

Data Matriks Jacobi untuk persamaan SPANL (b):


[ ]
x 2 x 1x3 x 2+ x 4 x3
2
3 x 1 4 x2 3 4
1 1 1 1
2 x 1+ 2 x 2 2 x 1+ x 2 0 0

Maka, didapatkan solusi pada iterasi ke-7, yaitu:


x 1=3.8571
x 2=4.8571
x 3=3.7533
x 4=0.9097

3. Suatu larutan yang mengandung 0.10 M asam nitrat (HNO3)


dijenuhkan dengan menggunakan larutan perak asetat (CH3COAg),
suatu garam yang sedikit larut dalam air. Sistem neraca-neraca
massa dan ionic yang dapat menggambarkan proses penjenuhan
tersbut adalah sebagai berikut:

N O3
(neraca massa)


+
Ag (neraca massa)



Ac (neraca massa)


+
Ag

+
H
(neraca ionik)

A c



N O3

+
Ag

(Ksp)
A c


+
H

(Ka)
A c /[HAc ]=1.8 105

di mana S adalah mol/L perak asetat yang terlarut. Dengan


menggunakan relas-relasi di atas, maka didapat uangkapan berikut
ini untuk kelarutan S dari perak asetat:

S2 K
Ka ( K sp )
1 + S= sp + 0.10
S

Hitunglah harga kelarutan S yang dimaksud!

Solusi

Persamaan yang didapat, diubah bentuk menjadi satu ruas

2
K
Ka ( S
K sp )
1 + S sp 0.10=0
S
Listing Program Newton-Raphson:
implicit none

Real*8 eps, f, df, x, xold

Integer flag, iter, maxiter

Write (*, '(A,$)') 'Harga awal untuk X (x0) : '

Read (*,*) xold

Write (*, '(A,$)') 'Jumlah iterasi maksimum : '

Read (*,*) maxiter

Write (*, '(A,$)') 'Epsilon/ Kriteria Proses : '


Write (*, '(A,$)') 'Epsilon/ Kriteria Proses : '

Read (*,*) eps

iter = 0

flag = 0

x = xold

DO While (flag .eq. 0)

x = x - f(x)/df(x)

IF (ABS(x-xold) .LE. Eps) then

flag = 1

ELSEIF (iter .GT. maxiter) then

flag = 2

ELSE

iter = iter +1

x=xold

ENDIF

ENDDO

Write (*,*) 'Nilai X awal = ',xold

Write (*,*) 'Hasil x = ', x

Write (*,*) 'Flag = ', flag

Write (*,*) 'Jumlah Iterasi =', iter


Write (*,*) 'Flag = ', flag

Write (*,*) 'Jumlah Iterasi =', iter

STOP

END

Function f(x)

Real*8 f,x

f = 0.006*(x**2-1)+x**2-(0.003/(x))-0.1

Return

End

function df(x)

Real*8 df,x

df = 0.012*x+2*x+(0.003/(x**2))

Return

End

Didapatkan nilai
S pada iterasi ke
11, yaitu:

0.55483871045
9

You might also like