19/439732/TK/48462
TUGAS MINGGU 11
import numpy as np
import matplotlib.pyplot as plt
Langkah 2. Mendefinisikan fungsi yang diketahui pada soal dengan input Ci (matriks Ca,
Cb, Cc, dan V), Fv (flowrate), dan Cd (konsentrasi D).
def fungsi (Ci,Fv,Cd):
Fx = np.zeros(np.size(Ci))
Ca = Ci[0]
Cb = Ci[1]
Cc = Ci[2]
Willy Dinata
19/439732/TK/48462
V = Ci[3]
r1 = k1*Ca*Cb**2
r2 = k2*Cc*np.sqrt(Cd)
Fx[0] = Fv*(Cain-Ca)+V*(-r1)
Fx[1] = Fv*(Cbin-Cb)+V*(-r1-r2)
Fx[2] = Fv*(Ccin-Cc)+V*(r1-r2)
Fx[3] = Fv*(Cdin-Cd)+V*r2
return Fx
Langkah 3. Lakukan iterasi dengan metode invers matriks untuk setiap Fv dan Cd dengan
tebakan awal = 1.
def Fungsi2 (Fv,Cd):
xold = np.array([1,1,1,1])
n = len(xold)
errmax = 1
while errmax>tol:
fold = fungsi(xold,Fv,Cd)
Z = np.zeros([n,n]) #Membuat matriks Z
for i in range(0,n):
tanda = np.zeros(n)
tanda[i] = 1
xplus = xold+tanda*eps
fplus = fungsi(xplus,Fv,Cd)
xmin = xold-tanda*eps
fmin = fungsi(xmin,Fv,Cd)
Z[:,i] = (fplus-fmin)/(2*eps)
Zinv = np.linalg.inv(Z) #Menghitung invers matriks Z
xnew = xold-Zinv@fold
errmax = np.max(np.abs(xnew-xold))
xold = xnew
return xnew
Willy Dinata
19/439732/TK/48462
xnew = np.zeros([5,4])
for i in range (5):
xnew[i,:] = Fungsi2(Fvi[i],Cdi[i])
Langkah 5. Lakukan iterasi dengan metode invers matriks pada Fv = 1L/jam dan Cd =
0.8501 dengan nilai tebakan awal = 1
#Langkah Iterasi pada Fv=1L/jam dan Cd=0.0851
Fv = Fvi[0]
Cd = Cdi[0]
xold = np.array([1,1,1,1])
n = len(xold)
errmax = 1
Ca1 = [] #Membuat tempat untuk Ca=Ca1
Cb1 = [] #Membuat tempat untuk Cb=Cb1
Cc1 = [] #Membuat tempat untuk Cc=Cc1
Vr1 = [] #Membuat tempat untuk Vr=Vr1
errtot1 = [] #Membuat tempat untuk err=errtot1
while errmax>tol:
fold = fungsi(xold,Fv,Cd)
Z = np.zeros([n,n]) #Membuat matriks Z
for i in range(0,n):
Willy Dinata
19/439732/TK/48462
tanda = np.zeros(n)
tanda[i] = 1
xplus = xold+tanda*eps
fplus = fungsi(xplus,Fv,Cd)
xmin = xold-tanda*eps
fmin = fungsi(xmin,Fv,Cd)
Z[:,i] = (fplus-fmin)/(2*eps)
Zinv = np.linalg.inv(Z) #Menghitung invers matriks Z
xnew = xold-Zinv@fold
error_x = np.abs(xnew-xold)
errmax = np.max(error_x)
xold = xnew
Langkah 7. Lakukan iterasi dengan metode invers matriks pada Fv = 3L/jam dan Cd =
0.7381 dengan nilai tebakan awal = 1
#Langkah Iterasi pada Fv=3L/jam dan Cd=0.7381
Fv = Fvi[-1]
Cd = Cdi[-1]
Willy Dinata
19/439732/TK/48462
xold = np.array([1,1,1,1])
n = len(xold)
errmax = 1
Ca2 = [] #Membuat tempat untuk Ca=Ca2
Cb2 = [] #Membuat tempat untuk Cb=Cb2
Cc2 = [] #Membuat tempat untuk Cc=Cc2
Vr2 = [] #Membuat tempat untuk Vr=Vr2
errtot2 = [] #Membuat tempat untuk err=errtot2
while errmax>tol:
fold = fungsi(xold,Fv,Cd)
Z = np.zeros([n,n]) #Membuat matriks Z
for i in range(0,n):
tanda = np.zeros(n)
tanda[i] = 1
xplus = xold+tanda*eps
fplus = fungsi(xplus,Fv,Cd)
xmin = xold-tanda*eps
fmin = fungsi(xmin,Fv,Cd)
Z[:,i] = (fplus-fmin)/(2*eps)
Zinv = np.linalg.inv(Z) #Menghitung invers matriks Z
xnew = xold-Zinv@fold
error_x = np.abs(xnew-xold)
errmax = np.max(error_x)
xold = xnew
print('{:^10.4f}{:^10.4f}{:^10.4f}{:^10.4f}{:^10.4e}'.format(*baris))
print('--------------------------------------------------------------')