Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 6

program tugas 3 dian

logical ok
real*8 x10,x20,x30,relaksasi,x1,x2,x3
real*8 F01,f02,f03,f11,f12,f13,f21,f22,f23,f31,f32,f33
integer iter
write (*,*) 'Mencari komposisi saat setimbang:'

c === pernyataan logical


ok=.false.

c === looping
do while (.not.ok)
X10=0.35
x20=0.63
x30=0.46
tolX=0.0001
relaksasi=0.25
iter=0
epsx=0.01

x1=x10
x2=x20
x3=x30
call subroutine menghitungF (x1,x2,x3,f01,f02,f03)
X1=x10+epsx

call subroutine menghitungF (x1,x2,x3,f11,f21,f31)


dF1dX1=(F11-F01)/(epsx)
dF2dX1=(F12-F02)/(epsx)
dF3dX1=(F13-F03)/(epsx)
x1=x10
x2=x20+epsx

call subroutine menghitungF (x1,x2,x3,f12,F22,f32)


dF1dX2=(F21-F01)/(epsx)
dF2dX2=(F21-F02)/(epsx)
dF3dX2=(F21-F03)/(epsx)

x2=x20
x3=x30+epsx
call subroutine menghitungF (x1,x2,x3,f13,f23,F33)
dF1dX3=(F31-F01)/(epsx)
dF2dX3=(F32-F02)/(epsx)
dF3dX3=(F33-F03)/(epsx)

c === isi matrix


a11=df1dx1
a12=df1dx2
a13=df1dx3
a14=-F01

a21=df2dx1
a22=df2dx2
a23=df2dx3

a24=-F02

a31=df3dx1
a32=df3dx2
a33=df3dx3
a34=-F03

c === pengolahan matrix


c === kolom pertama baris kedua
rasio2=a21/a11
a222=a22-rasio2*a22
a223=a23-rasio2*a23
a224=a24-rasio2*a24
c === baris 3 kolom 1
rasio31=a31/a11
a322=a32-rasio31*a22
a323=a33-rasio31*a23
a324=a34-rasio31*a24

c === baris 3 kolom 2


rasio32=a322/a222
a333=a323-rasio32*a323
a334=a324-rasio32*a324

c === backward rasio


dx3=a334/a333
dx2=(a224-a223*dx3)/a222

dx1=(a14-a13*dx3-a12*dx2)/a11

x11=x10+relaksasi*dx1
x21=x20+relaksasi*dx2
x31=x30+relaksasi*dx3

Er1=abs((x11-x10)/x11)*100
write (*,*) 'Kesalahan Relatif X1= ',Er1
Er2=abs((x21-x20)/x21)*100
write (*,*) 'Kesalahan Relatif X2= ',Er2
Er3=abs((x31-x30)/x31)*100
write (*,*) 'Kesalahan Relatif X3= ',Er3

c === kesalahan relatif


if (Er1.le.tolX)then
ok=.true.
else if (er2.le.tolx)then
ok=.true.
else if (er3.le.tolx)then
ok=.true.
else
X10=X11
x20=x21
x30=x31
end if

c === iterasi
iter=iter+1

write (*,*) 'Iterasi ke=', iter


end do

c
c

end looping
write (*,1)'hasil akhir X =', X1,X2,X3

c 1 format (2x,'X1=',f10.4,4x,'X2=',f10.4,4x,'X3=',f10.4)
end

c === subroutine
subroutine menghitungF (x1,x2,x3,f1,f2,f3)
real*8 ca,cb,cc,cd,ce,k1,k2,k3
real*8 YA0,YB0,YC0,YD0,YE0,p,r,t
k1=2.461
k2=23.747
k3=58.44
P=1519875
T=773
R=8.314
Ya0=0.5
Yb0=0.4
yc0=0.0
yd0=0.0
Ye0=0.1

Ca0=yA0*P/R/T
Cb0=yb0*P/R/T
Cc0=yc0*P/R/T
Cd0=yd0*P/R/T

Ce0=ye0*P/R/T

CA=CA0*(1-X1-X3)
CB=CB0*(1-X2)-Ca0*(X1+X3)
CC=CC0*(1-X1-X3)
CD=Cd0+(Cb0*x2)+(CA0*x3)
Ce=Ce0+(3*Ca0*x1)+(cb0*x2)+(4*Ca0*x3)

F1=k1-(CC*Ce**3/(Ca*Cb))
F2=k2-(Cd*Ce/(Cc*Cb))
F3=k3-(Cd*Ce**4/(Ca*Cb**2))

end subroutine

You might also like